如魚得水悠游於終端——Fish Shell
對於常常在 terminal 敲指令的人來說,如果對於每一行代碼都事必躬親,非要自己打出來不可的話,肯定是會消耗不少時間。為了提高效率,除了 alias 之外設置 auto-completion 也是很好的方式。只不過內建 bash 的功能實在是非常陽春,為此只好開始尋找新的 shell 了。(對於不敲代碼的偽程序員敝人來說動機就是如此單純www)
時下熱門 Zsh V.S. 曖曖含光 Fish
談到 shell 就不能不提大名鼎鼎的 zsh。作為大眾首選,我認為大部分原因得歸功於 oh-my-zsh,因為它提供了許多實用插件的集成,使其更加符合「開箱即用」的狀態。
如此一來看似不錯,但接踵而來的問題便是執行速度的拖累,龐大的架構使得「慢」成了 zsh 背負的原罪。殊不知這並不是 zsh 的本質,而是因為 oh-my-zsh 帶了太多東西;反過來說,如果當初自己折騰插件,只裝自己需要用到的東西,執行速度就不會降得那麼誇張了,不過這就得騰出時間自己設置。
因此懶人如敝人,一看到 fish 便如獲至寶,馬上毫不猶豫將終端環境換掉。Fish,“the friendly interactive shell” 的縮寫,顧名思義,提供使用者非常友善且開箱即用的環境,幾乎不需另外安裝插件,在此簡單列出一些實用功能:
自動補全、建議:
舉凡檔案路徑、指令參數、甚至是歷史指令都能輕鬆搞定。
語法高亮:
不存在的指令默認以紅色字體顯示,非常一目瞭然。
Autojump:
對於常常在目錄間跳來跳去的人相當方便。
安裝及配置 Fish
安裝部分就不贅述,每個發行版都有不同的安裝方式,大多都能在官方 repo 中找到。
安裝完成後可以用 # chsh -s /usr/bin/fish
指令將默認 shell 換成 fish,但是不建議,因為 fish 不相容 bash 語法,有些自啟動腳本可能無法正確運作,建議有使用桌面環境的人只需要修改終端模擬器的啟動參數。
當然每個人用的終端模擬器都不一樣,不過步驟大同小異,首先先查自己的終端模擬器如何添加啟動參數,以 tilda 為例,在終端鍵入 tilda --help
之後,看到一連串的操作說明,其中:
-c, --command Run a command at startup
就是我們所需要的,大部分終端模擬器應該都是用 -c 或 -e 來設定啟動參數。
接下來就是正題開始,在 /usr/share/applications 找到其 desktop 檔(這裡是 tilda.desktop)並用文字編輯器打開,將 Exec=/usr/bin/tilda
這一行變成 Exec=/usr/bin/tilda -c fish
,再另存到 ~/.local/share/applications 裡頭,就能替換掉原本的。
與 bashrc 相對的檔案在 ~/.config/fish/config.fish,基本上 alias 可以無痛轉移,但是 fish 沒有 export 語法,因此
export a=b
要改成
set -x a b
才行。
2016-12-11 補充
關於默認 shell 的部分,上面的配置有些繁瑣,參考 archlinux wiki 的說明後發現有個比較省事的辦法,就是直接在 ~/.bashrc 的最後一行加上 exec fish
使得 fish shell 能夠自動啟動。
另外,konsole 的使用者還可以直接在 profile 中修改。
額外配置
要進行更多細部調節,fish 提供了 web 界面,只需在終端鍵入:
$ fish_config
另外,如果需要額外功能,比方說運行 bash script,fish 也能安裝插件,推薦利用 fisherman 管理。安裝 fisherman 後,鍵入:
$ fisher edc/bass
之後執行 bash script 時只要在最前面加上 bass
就可以正常運行,例如:
$ bass export X=1
結論
對於懶得折騰的人,選 fish 準沒錯。
留言
張貼留言