iT邦幫忙

DAY 21
5

現代環境下的 Linux 裡的新工具系列 第 18

快速指到常用的目錄及檔案的工具:fasd

  • 分享至 

  • xImage
  •  

在命令模式裡,常常要切換不同的目錄,看不同的檔案,而且是重覆在動作,而要敲出每個路徑來,有了 fasd,能夠用最快的速度存取目錄或檔案。
為何有fasd
靈感是來自於 autojumpzv這些工具,而發展出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

真是蠻有趣的功能。


上一篇
從命令模式解析XML的工具:xmlstarlet
下一篇
用 vi 指令操作的檔案管理器: ranger
系列文
現代環境下的 Linux 裡的新工具27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
timloo
iT邦研究生 2 級 ‧ 2013-10-07 10:35:16

singernew提到:
為何用這些字母來做alias是因為代表以下的意思:
f(files), a(files/directories), s(show/search/select), d(directories)

還不錯的小工具。

這些資訊從那收集的,我真孤陋寡聞。

我要留言

立即登入留言