[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文件