Linux中國

讓 Fish Shell 比 Bash 更好的 11 大特性

就算你是素食主義者或對海鮮有過敏反應,也值得試試 Fish ?

Bash 是使用最廣泛的 Shell,Zsh 則是開發者圈裡最受青睞的,但 Fish 往往被許多人忽視。

這絕非誇張之辭。Fish 的確是個備受忽視的 Shell,它對新手和資深的自由開源軟體用戶,都可能是極好的選擇。

Fish 提供了一系列吸引人的功能,使其具有鮮明優勢。這其中包括了從語法高亮到縮寫(我個人最喜歡的部分),這裡面充滿了種種新奇。

下面,我要和大家分享一些我最青睞的 Fish Shell 特性。

1、語法高亮

在錯誤的命令被執行之前就識別出它們將大大節省你的時間,同時降低你的挫敗感。

現代的許多代碼編輯器都內置了語法高亮功能,而 Fish 不僅將此功能內置在了 Shell 中,而且對於 Linux 命令也同樣有效。

命令有誤?你會發現其被紅色高亮。同樣的,對於不符合上下文的參數和選項也是如此。

錯誤高亮為紅色

2、自動建議

當你輸入命令時,Fish Shell 會自動推薦命令,然後你可以按照提示,使用 Tab 鍵進行相應的補全操作。

Fish 自動補全

隨著你的輸入,建議會以灰色顯示,使其更易於識別。如果整條建議都對你的胃口,你可以按右箭頭鍵來完成整個命令的補全

3、命令選項的互動式手冊頁

這是一個炫酷的功能,你可以交互性地參考手冊頁完成命令選項的填寫。

首先,你需要先解析手冊頁,這可以通過以下命令來完成:

fish_update_completions

這會對手冊頁進行解析。

手冊頁解析

現在,如果你輸入一個命令,添加連字元作為選項,然後按下 Tab 鍵,就能看到手冊頁給出的可能選項及其簡短描述:

Fish 手冊頁幫助

你可以通過滾動一覽這些選項,並在閱讀了作用說明後,從彈出的分頁器中進行選擇。

要比直接輸入 command -h 更便利一些對吧。

4、縮寫優於別名

在 Fish 里,縮寫的作用就如同文本擴展工具。你可以為一些常用的代碼設置易於調用的縮寫。

比如說,我把 sch 設為 pacman -Ss 的縮寫,用以搜索軟體包。

abbr -a sch pacman -Ss

於是,每次我輸入 sch 並按空格鍵後,它就會被替換成 pacman -Ss

Fish Shell 縮寫

你甚至可以把它寫入配置文件,讓其成為永久設置。

? 別名和縮寫的關鍵區別在於,別名的工作是內部完成的,你看不到其背後真正運行的命令。而縮寫不僅會展示實際的命令,而且會讓它們在歷史記錄里也正確地出現。

5、豐富的基於 Web 的幫助

Linux 純粹主義者常常依賴手冊頁來尋求命令幫助,而新一代的 Linux 用戶則更多地依賴網路資源。

Fish 則結合了這兩者優點,提供了詳盡的「基於 Web 的幫助」功能,並且且易於使用,即便在無網路連接的情況下也同樣可用,因為它是本地化存儲的。

在運行 Fish Shell 時,僅需輸入:

help

就可以在你的網路瀏覽器上打開幫助頁面了。

Fish Shell 網頁幫助

如今,你可以隨時方便地查閱這份詳細的文檔。

6、基於 Web 的配置

沒錯,這是另一個「基於 Web」的功能。

要改變提示符顏色或其他配置,你不必在終端里編輯配置文件,相反地,你可以運行基於 Web 的配置。

在運行 Fish Shell 時,只需輸入以下命令:

fish_config

這會打開你的瀏覽器,並顯示出配置設置。

Fish Shell 基於 Web 的配置

在這裡,你可以更改顏色,從現有列表中選擇一個不同的提示符等等。

提示符選擇

通過這種方式來改變配置更方便,對嗎?

7、自動切換目錄

如果你想切換到某個目錄,你不需要輸入 cd 命令。只需要鍵入該目錄名稱就行了。

例如,如果你位於主目錄,並希望切換到 Downloads 目錄,只需要輸入 Downloads。輸入過程中,它會進一步給出補全建議。

自動 cd

如果你正在某個特定目錄中,想要跳轉到一個完全不同的路徑,則需要使用絕對路徑。

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

Fish 隱私模式

工作完成後,通過鍵入 exit 就可以退出隱私模式。

Fish 還有更多你可以探索的

Fish Shell 提供了許多其他的用戶友好特性,比如:

  • 使用 ALT+Enter 實現簡單的多行命令編輯
  • 切換 Emacs(默認)/Vim 鍵位綁定
  • 提供簡潔明了的腳本編寫語法

當然,你可以在其他 Shell 中通過一些努力實現大部分 Fish Shell 的特性,但默認啟用這些特性可就完全是另一回事了。

Fish 可以幫助你在掌控開發環境的前提下,提高開發工作的效率。別把為 Fish Shell 編寫腳本運行在 Bash 中,在多用戶系統的共享環境中可能會引發 Shell 兼容性問題。

如果你喜歡這些特性,試試 Fish Shell 看看效果如何。也許你會將 Fish 設為 你的默認 Shell

即使你不想在終端里看到 「Fish」,也許你會喜歡 ASCII 水族館 ?

在 Linux 終端利用 Asciiquarium 打造海底世界

? 請在評論中分享你對 Fish Shell 的看法 ?

(題圖:DA/8522d28f-40ab-4eaa-b2b5-bc627f114224)

via: https://itsfoss.com/fish-shell-features/

作者:Abhishek Prakash 選題:lujun9972 譯者:ChatGPT 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國