[TOC]
## 快捷进入文件夹fish版本
使用linux有时候会经常进入到某些文件夹,用cd比较影响效率,我使用的shell是fish shell,于是使用fish 写了一个直接进入文件夹的函数,并且这是一个模板,之后比如要做直接打开网页,直接打开问价夹都可以使用这个模板修改很快实现,并且不存在什么移植困难的问题! <br/>
fish自定义函数放置在`~/.config/fish/functions/`下面,这个下面以.fish结尾的文件是在fish初始化时会自定加载的,类似与bash的bashrc文件。 <br/>
写的这个fish函数命名为`cdd.fish`,在fish shell下加载后,对应的命令就是`cdd`,源码如下:
```sh
#!/usr/bin/env fish
#UFUNCTION=第二代cdd
function cdd
#+++++++++++++++ 参数设置 +++++++++++++++++++
set dir "/home/yhp/.config/fish/functions"
set cmd_name "cdd" #本函数的外部调用指令,需保持文件名为 cmd_name.fish 函数名为 cmd_name
set insert_cmd "cd" #函数实际的执行主要指令 -进入指定文件夹
#++++++++++++ end 参数设置 ++++++++++++++++++
set fd "/tmp/$cmd_name.db"
if not test -f $fd
set file "$dir/$cmd_name.fish"
set db (grep -n "#~~~~~~#" $file | cut -d':' -f1 | tail -n1)
set db (math $db + 1)
cat $file | tail -n +$db >$fd
end
#cat $fd
if test -z $argv[1] #空参数 刷新一次命令数据
set file "$dir/$cmd_name.fish"
set db (grep -n "#~~~~~~#" $file | cut -d':' -f1 | tail -n1)
set db (math $db + 1)
cat $file | tail -n +$db >$fd
echo "使用 $cmd_name -help查看支持的参数"
else if test $argv[1] = "-help"
sed -i "s/#//g" $fd #删除文本中的 "#"
echo "Usage: $cmd_name [option]"
echo
cat $fd | awk '{print $1,$2}' | column -s \ -t
echo
else if test $argv[1] = "-refresh"
set file "$dir/$cmd_name.fish"
set db (grep -n "#~~~~~~#" $file | cut -d':' -f1 | tail -n1)
set db (math $db + 1)
cat $file | tail -n +$db >$fd
echo "指令刷新完成,请使用 $cmd_name -help 查看最新指令"
echo
else
set cmd "awk '/#$argv[1]/{print $1}' $fd"
set st (eval $cmd)
if test -z $st #没有匹配的参数,刷新一次命令数据,并提示
set file "$dir/$cmd_name.fish"
set db (grep -n "#~~~~~~#" $file | cut -d':' -f1 | tail -n1)
set db (math $db + 1)
cat $file | tail -n +$db >$fd
echo "使用 $cmd_name -help查看支持的参数"
else
#echo $st
set ur (echo $st | cut -d' ' -f3)
set cmd "$insert_cmd $ur"
eval $cmd # >/dev/null ^/dev/null &
pwd
end
end
return
end
###### 按照下面的格式,将会自动读取下面的内容,方便添加内容 ########
#~~~~~~#
#-help 显示帮助
#-refresh 刷新指令缓存(每次添加指令后执行一次) #该行以下可修改
#tmp 进入个人tmp文件夹(每次登录会被清空) /home/yhp/data/tmp
#data 进入个人数据文件夹 /home/yhp/data
#note 进入看云笔记路径 /home/yhp/data/kancloud/note2020
```
## 快速进入某些文件夹bash版本(模板)
上面的写的方式稍微复杂,我们可以在.bashrc中添加函数,来实现这个功能,注意要想真正进入某个文件件,我们必须把函数写到像`.bashrc`文件一样在bash启动时会加载的文件中去,以下使用函数版本实现,这个方式在fish中也可以实现,比上述方法要简介明了!
bash用于测试的源代码如下所示: <br/>
```bash
#!/bin/bash
#快速进入指定文件夹
#-------路径存储的函数-----------
function cat_cdd_list(){
cat<<EOF
#-h 显示帮助
#tmp 进入自定义tmp路径 /home/yhp/data/tmp
#python 进入python项目路径 /home/python
EOF
}
function cdd_tp(){
cmd_name="cdd_tp" #设计的指令名称
real_cmd="echo" #真正执行的指令
data_src="cat_cdd_list" #数据来源
CMD_IN="$*"
case $CMD_IN in
"-h")
echo "Usage: $cmd_name [option] 快速进入一些文件夹"
echo
cat_cdd_list | awk '{gsub(/#/, "");print $1,$2}' | column -s \ -t
echo
return
;;
*)
find_id="$data_src | awk '/#$*/{print \$3}' "
#echo $find_id
find_id=$(eval $find_id)
#echo $find_id
if [ -n "$find_id" ];then
#执指令
eval "$real_cmd $find_id"
return
fi
echo "使用 $cmd_name -h 查看帮助!"
return ;;
esac
}
cdd_tp $*
```
- 图片处理
- 调整图片像素大小
- Python控制摄像头拍照
- 文件操作
- 提取文件名,扩展名
- 查找文件
- ls列出目录,文件
- shell解析json串
- 读取文件第n行内容
- 将变量写入文件和从文件读取变量的一中方法
- shell操作二进制文件
- 命令行将ppt转换为pdf
- python读取串口数据
- 查最近修改的文件
- awk的一些操作
- 输入输出
- 判断输入是否为数字
- 获取脚本输入的第 i 个参数
- column实现输出列表对齐
- 串口调试脚本
- 按键实时检测
- 网络脚本
- 基于Python的TCP客户端
- bash将字符转换为urlencode
- 挂载远程文件夹到本地
- 其他功能
- shell随机产生某一个范围内的整数
- 删除、替换字符串中指定的字符
- 获取时间日期并打印
- 字符串反转
- 实用功能
- 自定义函数模板
- shell中包含另一个脚本文件实现include的方法
- Bash下实现自定义指令的几种方法
- 根据文件类型自动执行脚本
- 命令行运行matlab
- 项目引导main.sh脚本
- 新建文件模板脚本
- bash实现读取和改写ini文件
- 添加当前路径到fish shell环境变量
- 查询进程并杀死进程
- 带界面的身份验证
- 常用软件
- 基本软件
- 我喜欢的软件
- 自用带有界面的系统修复工具-repair
- 解析xml文件