讓 Fish Shell 比 Bash 更好的 11 大特性
![](https://linuxstory.org/wp-content/uploads/2024/06/183053z4974f7g0077az6i-800x400.jpg)
就算你是素食主義者或對海鮮有過敏反應,也值得試試 Fish ?
Bash 是使用最廣泛的 Shell,Zsh 則是開發者圈裡最受青睞的,但 Fish 往往被許多人忽視。
這絕非誇張之辭。Fish 的確是個備受忽視的 Shell,它對新手和資深的自由開源軟體用戶,都可能是極好的選擇。
Fish 提供了一系列吸引人的功能,使其具有鮮明優勢。這其中包括了從語法高亮到縮寫(我個人最喜歡的部分),這裡面充滿了種種新奇。
下面,我要和大家分享一些我最青睞的 Fish Shell 特性。
1、語法高亮
在錯誤的命令被執行之前就識別出它們將大大節省你的時間,同時降低你的挫敗感。
現代的許多代碼編輯器都內置了語法高亮功能,而 Fish 不僅將此功能內置在了 Shell 中,而且對於 Linux 命令也同樣有效。
命令有誤?你會發現其被紅色高亮。同樣的,對於不符合上下文的參數和選項也是如此。
2、自動建議
當你輸入命令時,Fish Shell 會自動推薦命令,然後你可以按照提示,使用 Tab
鍵進行相應的補全操作。
隨著你的輸入,建議會以灰色顯示,使其更易於識別。如果整條建議都對你的胃口,你可以按右箭頭鍵來完成整個命令的補全。
3、命令選項的互動式手冊頁
這是一個炫酷的功能,你可以交互性地參考手冊頁完成命令選項的填寫。
首先,你需要先解析手冊頁,這可以通過以下命令來完成:
fish_update_completions
這會對手冊頁進行解析。
現在,如果你輸入一個命令,添加連字元作為選項,然後按下 Tab
鍵,就能看到手冊頁給出的可能選項及其簡短描述:
你可以通過滾動一覽這些選項,並在閱讀了作用說明後,從彈出的分頁器中進行選擇。
要比直接輸入 command -h
更便利一些對吧。
4、縮寫優於別名
在 Fish 里,縮寫的作用就如同文本擴展工具。你可以為一些常用的代碼設置易於調用的縮寫。
比如說,我把 sch
設為 pacman -Ss
的縮寫,用以搜索軟體包。
abbr -a sch pacman -Ss
於是,每次我輸入 sch
並按空格鍵後,它就會被替換成 pacman -Ss
。
你甚至可以把它寫入配置文件,讓其成為永久設置。
? 別名和縮寫的關鍵區別在於,別名的工作是內部完成的,你看不到其背後真正運行的命令。而縮寫不僅會展示實際的命令,而且會讓它們在歷史記錄里也正確地出現。
5、豐富的基於 Web 的幫助
Linux 純粹主義者常常依賴手冊頁來尋求命令幫助,而新一代的 Linux 用戶則更多地依賴網路資源。
Fish 則結合了這兩者優點,提供了詳盡的「基於 Web 的幫助」功能,並且且易於使用,即便在無網路連接的情況下也同樣可用,因為它是本地化存儲的。
在運行 Fish Shell 時,僅需輸入:
help
就可以在你的網路瀏覽器上打開幫助頁面了。
如今,你可以隨時方便地查閱這份詳細的文檔。
6、基於 Web 的配置
沒錯,這是另一個「基於 Web」的功能。
要改變提示符顏色或其他配置,你不必在終端里編輯配置文件,相反地,你可以運行基於 Web 的配置。
在運行 Fish Shell 時,只需輸入以下命令:
fish_config
這會打開你的瀏覽器,並顯示出配置設置。
在這裡,你可以更改顏色,從現有列表中選擇一個不同的提示符等等。
通過這種方式來改變配置更方便,對嗎?
7、自動切換目錄
如果你想切換到某個目錄,你不需要輸入 cd
命令。只需要鍵入該目錄名稱就行了。
例如,如果你位於主目錄,並希望切換到 Downloads
目錄,只需要輸入 Downloads
。輸入過程中,它會進一步給出補全建議。
如果你正在某個特定目錄中,想要跳轉到一個完全不同的路徑,則需要使用絕對路徑。
8、更簡潔的路徑導航
如果你需要在瀏覽過的目錄之間來回切換,沒必要輸入路徑或使用 cd ..
等。只要按 ALT + ←
或 ALT + →
,分別向前和向後移動就行了。
或者,你可以鍵入 cdh
並按回車,這會呼出一個分頁器界面,你可以使用對應的數字來回到你想去的目錄。
9、互動式歷史搜索
你可以在 Fish 中互動式地搜索某個特定的歷史命令。做這個的時候,就使用我們熟悉的 CTRL+R
就行了。
這會呼出一個類似於分頁器的界面,顯示一個搜索提示。輸入你想要查找的命令,就能看到搜索結果:
10、全局變數
在 Fish Shell 中,如果你將一個變數設置為全局的,那麼它將在重啟 Shell 或者重啟系統後仍然可用。
要設置一個全局變數,可以使用:
set -U my_variable 10
這時,my_variable
的值將會被設置為 10,即使系統重啟後也不變。
是的,不需要將它們添加到你的 RC 或 profile 中。
11、隱私模式
Fish Shell 有一個隱私模式,該模式下輸入的命令將不會被保存到歷史記錄或存儲在硬碟上。
要進入隱私模式,使用命令:
fish -P
工作完成後,通過鍵入 exit
就可以退出隱私模式。
Fish 還有更多你可以探索的
Fish Shell 提供了許多其他的用戶友好特性,比如:
- 使用
ALT+Enter
實現簡單的多行命令編輯 - 切換 Emacs(默認)/Vim 鍵位綁定
- 提供簡潔明了的腳本編寫語法
當然,你可以在其他 Shell 中通過一些努力實現大部分 Fish Shell 的特性,但默認啟用這些特性可就完全是另一回事了。
Fish 可以幫助你在掌控開發環境的前提下,提高開發工作的效率。別把為 Fish Shell 編寫腳本運行在 Bash 中,在多用戶系統的共享環境中可能會引發 Shell 兼容性問題。
如果你喜歡這些特性,試試 Fish Shell 看看效果如何。也許你會將 Fish 設為 你的默認 Shell。
即使你不想在終端里看到 「Fish」,也許你會喜歡 ASCII 水族館 ?
? 請在評論中分享你對 Fish Shell 的看法 ?
(題圖:DA/8522d28f-40ab-4eaa-b2b5-bc627f114224)
via: https://itsfoss.com/fish-shell-features/
作者:Abhishek Prakash 選題:lujun9972 譯者:ChatGPT 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive