在命令模式裡,常常要切換不同的目錄,看不同的檔案,而且是重覆在動作,而要敲出每個路徑來,有了 fasd,能夠用最快的速度存取目錄或檔案。
為何有fasd
靈感是來自於 autojump、z、v這些工具,而發展出fasd。而且會根據切換到的目錄及使用的檔案,記錄其使用的頻率,而快速切換使用所要的檔案及目錄。
其中是用到了 Frecency 的演算法,這個字是來自於 frequency 及 recency 兩概念組成的複合新字,來自於 Mozilla 且用於 Firefox。
fasd安裝設定
安裝不需多言,要使用的第一次,在 .bashrc 裡最後面加上這一行:
eval "$(fasd --init auto)"
就會每次登入自動啟用並自動加入以下的 alias:
$ alias
alias a='fasd -a'
alias d='fasd -d'
alias f='fasd -f'
alias s='fasd -si'
alias sd='fasd -sid'
alias sf='fasd -sif'
alias z='fasd_cd -d'
alias zz='fasd_cd -d -i'
為何用這些字母來做alias是因為代表以下的意思:
f(files), a(files/directories), s(show/search/select), d(directories)
登入之後做些cd 或開啟看哪些檔案後,
~/.fasd 的內容會類似像這樣子:
/usr/share/cracklib|2.9|1381056800
/home/SITES|3.24483|1381057502
/home|1|1381055731
/usr/share/figlet/fonts|1|1381055773
/usr/bin|2|1381056301
/etc|7.02285|1381057537
/etc/dict|2|1381056177
/home/singernew/TODO|2.9|1381056325
/etc/nginx/nginx.conf|1|1381056212
/usr/share/figlet|4.09525|1381056906
/home/OZ/Campus/run.sh|1|1381056415
/home/OZ/Campus/config.yml|1|1381056406
/home/OZ|1|1381056374
/home/OZ/Campus|9.03185|1381056896
/usr/share|1|1381055776
/etc/passwd|2|1381056447
/usr/share/dict|3.55301|1381056914
這三個欄位是 目錄或檔案、頻率、上次的存取時間戳記。
使用方式
列出存取過的目錄、檔案及其頻率
$ a
4 /home
4 /usr/share
4 /usr/share/figlet/fonts
6 /etc/nginx/nginx.conf
6 /home/OZ
6 /home/OZ/Campus/config.yml
6 /home/OZ/Campus/run.sh
12 /etc/dict
12 /etc/passwd
12 /usr/bin
17.4 /home/singernew/TODO
17.4 /usr/share/cracklib
19.469 /home/SITES
21.3181 /usr/share/dict
24.5715 /usr/share/figlet
44.6502 /etc
54.1911 /home/OZ/Campus
列出存取過的目錄及其頻率
$ d
4 /home
4 /usr/share
4 /usr/share/figlet/fonts
6 /home/OZ
12 /etc/dict
12 /usr/bin
17.4 /home/singernew/TODO
17.4 /usr/share/cracklib
19.469 /home/SITES
21.3181 /usr/share/dict
24.5715 /usr/share/figlet
46.2484 /etc
54.1911 /home/OZ/Campus
列出存取過的檔案及其頻率
$ f
6 /etc/nginx/nginx.conf
6 /home/OZ/Campus/config.yml
6 /home/OZ/Campus/run.sh
12 /etc/passwd
搜尋
搜尋目錄及檔案裡有的字串:
$ s fig
2 12 /home/OZ/Campus/config.yml
1 26.0366 /usr/share/figlet
搜尋目錄裡有的字串:
$ sd fig
/usr/share/figlet
搜尋檔案裡有的字串:
$ sf fig
/home/OZ/Campus/config.yml
切換目錄
切換到符合有其字串的目錄:
[singernew@ithelp etc]$ z dic
[singernew@ithelp dict]$
表列出可切換的目錄,再鍵入編號就直接進入該目錄:
[singernew@ithelp dict]$ zz
13 4 /home
12 4 /usr/share
11 4 /usr/share/figlet/fonts
10 6 /home/OZ
9 12 /etc/dict
8 12 /usr/bin
7 17.4 /home/singernew/TODO
6 17.4 /usr/share/cracklib
5 19.469 /home/SITES
4 24.5715 /usr/share/dict
3 26.0366 /usr/share/figlet
2 54.1911 /etc
1 54.1911 /home/OZ/Campus
> 5
[singernew@ithelp SITES]$
最妙的特異功能
[singernew@ithelp SITES]$ alias v='f -e vim'
[singernew@ithelp SITES]$ v et pa
就等於做了這個動作:
vi /etc/passwd
就是可以用目錄及檔案的各部分字元,就會 match 到 ~/.fasd 裡的目錄檔案歷史,而對應到想要的檔案。
或者
[singernew@ithelp SITES]$ v
4 4 /etc/nginx/nginx.conf
3 4 /home/OZ/Campus/run.sh
2 15 /home/OZ/Campus/config.yml
1 17.4 /etc/passwd
> 2
就會執行:
vim /home/OZ/Campus/config.yml
真是蠻有趣的功能。
singernew提到:
為何用這些字母來做alias是因為代表以下的意思:
f(files), a(files/directories), s(show/search/select), d(directories)
還不錯的小工具。
這些資訊從那收集的,我真孤陋寡聞。