過去的加密命令和嚴格的語法已經一去不復返。為什麼要花更多時間解讀手冊頁面,而不是編寫腳本或導航系統呢?擁抱 fish shell 的強大和簡潔,它是您更流暢、更直觀的 Linux 體驗的通行證。
學會如何通過 fish shell 改變您的 Linux 之旅,從其用戶友好的界面到其豐富的定製選項。
對於流程的精簡和對 Linux 技能的新信心,表示歡迎!
先決條件
在開始之前,請確保您已經具備了以下必要條件,以便在本教程中跟隨:
- 已在您的機器上安裝了 Fish Shell – 本教程使用 fish-3.7.0,截至本文撰寫時的最新版本。
- A Linux system – This tutorial uses an Ubuntu 22.04 LTS for demonstrations, but other distributions will work.
探索命令驗證、自動完成和建議
使用安裝了 fish shell,深入了解 fish shell,以實現無縫的命令執行。fish shell 提供了即時反饋和上下文感知的命令、文件名和參數建議。
但首先,您需要訪問 fish shell,然後再查看命令驗證、自動完成和建議。
為了探索這個讓您在執行之前識別和修正錯誤的功能,請執行以下操作:
1. 打開終端並執行下面的fish
命令以訪問fish shell。

2. 接下來,輸入ls命令的第一個字母,嘗試列出當前目錄中的所有文件。
如下所示,字母‘l’變成紅色,因為fish shell將其識別為無效命令。這個即時的視覺提示表明命令有問題。
但不要擔心!由於自動建議,字母‘s’變暗,提示正確的命令。

3. 現在,按右箭頭或Ctrl+F鍵接受自動建議的ls
命令。
注意,字母‘l’從紅色變成藍色,因為fish shell現在識別您的命令為ls
。

在Fish配置文件中定義命令別名
除了實時反饋和上下文感知的建議外,fish還提供了一種強大靈活的方式來定制您的命令行環境 – fish配置文件。與可能使用多個配置文件的其他shell不同,fish主要使用一個名為config.fish的單個文件,位於~/.config/fish/目錄中。
為了看到配置如何影響fish shell,首先定義命令別名如下:
1. 使用您偏好的代碼或文本編輯器打開fish配置文件,如nano
或vim
,但本教程使用前者。
打開後,您將看到fish shell配置文件的初始內容,其中可能包含默認配置或相對較空的內容。此初始狀態取決於您或系統設置過程是否先前添加了配置。
該文件可能僅包含註釋或新安裝的基本條件塊,例如下面的例子。

2. 在if
塊內部添加以下function
,保存更改,然後關閉編輯器。
在這一點上,您正在配置fish配置文件中的自定義設置,此函數定義了一個別名(c
)用於clear
命令。
? 注意:每個定義的函數在~/.config/fish/functions/目錄中都有對應的.fish文件(即c.fish)。

clear
command3. 執行以下命令來source
配置文件(config.fish
)。
這個命令不會在終端機上輸出任何內容,但會將配置更改應用到當前會話中。
? 每次開啟新的 fish 會話時,這個 fish 配置文件會自動執行,是定義外殼自定義的理想場所。
4. 接下來,在提示符號中輸入 c
以驗證你的更改。
請注意,字母 ‘c’ 變成藍色,因為 fish shell 將其識別為 clear
命令。這種行為表明了 fish 配置的成功更改。
看看字母 ‘c’ 變成藍色了嗎?這個變化是因為 fish shell 知道字母 ‘c’ 是 clear
命令。這種行為表示你的 fish 配置已成功更新。
現在,為什麼不為那些你每次心情來臨時都會返回的可信命令設置更多的別名呢?

clear
command works自定義 Fish Shell 提示
除了為了更流暢的操作設置別名外,fish 還讓你有能力自定義提示,就像為你的外殼添加個人風格一樣。享受一個更乾淨、更有組織的提示,而不是冗長的目錄路徑。
要自定義 fish shell 提示,執行以下操作:
1. 打開 fish 配置文件(~/.config/fish/config.fish),並添加以下函數。
此函數將自定義你的 fish shell 提示以顯示(echo
)一個美元符號($
)後跟一個空格。

2. 将更改保存到 fish 配置文件中并退出编辑器。
3. 现在,source
配置文件以应用您的更改。
一旦被引用,您将会看到提示符的更改,如下面的截图所示。

跨会话保持更改
您已经了解如何在 fish shell 中进行自定义。但有一点需要注意:这些设置仅在当前会话中有效。
一旦您关闭当前会话并打开一个新会话会发生什么?噗!您精心制作的配置都消失了,是不是很糟糕?但不要担心,还有希望。让 funcsave
命令从遗忘中拯救您的配置!
要跨会话保持您的配置,请按照以下步骤进行:
1. 打开 fish 配置文件,并将 funcsave
命令追加到每个 function
后面,就像这样:

funcsave
command to persist functions across sessions2. 保存您的更改,并关闭编辑器和终端。
3. 打开一个新的终端会话,并运行下面的 fish
命令以访问 fish shell
如果您附加的funcsave
命令可以在持久化您的配置中起作用,您将会看到像下面这样的消息。

設置和持久化環境變量
雖然持久化函數很棒,但管理全局可訪問的值使shell腳本提升了一個檔次——設置環境變量。與依賴export
的傳統shell不同,fish使用set
與選項來控制變量作用域和導出行為。
但是,有個問題,你知道嗎?啊,你猜對了!通過終端機上的set
命令設置的變量只能在當前會話中訪問。
要設置和持久化環境變量,-gx
標誌將派上用場,如下所示:
1. 添加以下命令以set
在fish配置文件中設置MY_VARIABLE
變量為全局。下面是-gx
標誌的工作方式:
-g
– 使變量成為全局的,在同一用戶環境中的任何作用域中都可以訪問。-x
– 導出變量,使其對從fish啟動的任何外部命令或程序都可用。

2. 保存配置更改,然後關閉編輯器和終端機。
3. 打開一個新的終端會話,訪問fish shell,並運行以下命令來確認更改。
以下輸出確認更改已在各個會話中生效。

4. 確認後,將以下 set
命令添加到 fish 配置文件中,保存更改,並關閉編輯器。
此命令使 MY_UNIVERSAL_VARIABLE
變量在所有會話中都是全局的,即使在重新啟動後也是如此。
看下面的 -Ux
標誌是如何工作的:
-U
– 使MY_UNIVERSAL_VARIABLE
變量成為全局變量,確保它在所有當前和未來的終端會話中共享,包括不同用戶的會話。-x
– 將變量導出到子進程,使其可以被從當前會話調用的任何命令或腳本訪問。

5. 打開新的終端會話,進入 fish shell,並運行下面的 echo
命令來驗證更改。
如果一切順利,您將獲得以下輸出,表明更改已在各個會話中生效。

? 除了 fish 配置文件之外,還可以利用
fish_config
在終端中進行快速和自動應用的自定義。此命令在您的瀏覽器中啟動一個 Web 界面,使您可以進行提示調整、設置調整以及功能和變量管理,提供了一個用戶友好的設置。
使用 Fisher 套件管理器管理 Fish 插件
魚殼(Fish Shell)本身已經令人印象深刻,對吧?但你知道嗎?當你開始集成插件時,它變得更加強大。這些插件擴展了魚殼的功能,帶來了新的命令、工具和整合,顯著增強了你的命令行體驗。
一個很好的例子是 Fisher,這是專為魚殼設計的套件管理器。這個插件設計時考慮了性能和簡潔,而且非常輕量級。
? Fisher 在管理魚殼插件時非常輕量級,不能直接與系統級套件管理器相比。這一區別在於它管理的套件的大小和複雜性。
要管理魚殼插件,你首先必須按照以下步驟安裝 Fisher:
打開你的終端,進入魚殼,執行以下命令來下載並安裝 Fisher。這個命令獲取 Fisher 安裝腳本並將其管道傳輸到source
,透過curl
在當前的魚殼會話中執行腳本。
安裝完成後,你將看到以下輸出。

現在,執行下面的fisher
命令來確認安裝,查看你系統當前安裝的--version
Fisher。

安裝 GitNow 插件
現在你已經讓 Fisher 運作起來了,接下來呢?試試給你的 fish shell 加點 酷炫的插件?舉個例子,GitNow 是一個強大的工具包,能在 fish shell 內極大地增強你的 Git 工作流程——非常誘人。
GitNow 提供了簡化常規 Git 任務的精簡命令,提高了生產力,簡化了你的 Git 命令例程。
要使用 Fisher 套件管理器安裝 GitNow,請按照以下步驟進行:
1. 在你的 fish shell 中執行以下 fisher
命令以 安裝
GitNow 插件(joseluisq/gitnow
)。
此命令告訴 Fisher 拉取並集成 GitNow 到你的 fish 配置中,使其提供的一系列 Git 快捷方式立即可用。

2. 安裝完成後,執行下面的 gitnow
命令以確認 GitNow 是否正確安裝。
此命令會顯示當前安裝的 GitNow 版本,但只有在你的 shell 中識別到 GitNow 命令時才會顯示。

3. 最後,執行此 fisher
命令以 列出
Fisher 管理的所有插件,包括 GitNow。
下面,你可以看到 GitNow 插件和 Fisher 插件本身。

移除 Fish Shell 插件
你的 fish shell 是否淹沒在插件中?就好像你需要整理一團亂麻來找到你需要的東西一樣?通過移除不必要的插件來整理你的 fish shell 環境。
要從您的 fish shell 中刪除由 Fisher 管理的插件,請按照以下步驟進行:
1. 執行以下命令以 列出
目前安裝的所有插件。
從列表中選擇要刪除的插件。

2. 接下來,執行下面的 fisher remove
命令,後面跟著插件名稱(joseluisq/gitnow
)以進行刪除。
此命令告訴 Fisher 從您的 fish shell 環境中卸載 GitNow 插件。

3. 現在,再次執行相同的 fisher list
命令來確認 GitNow 插件是否已成功刪除。
GitNow 插件應該不再出現在已安裝插件的列表中。

卸載 Fisher 套件管理器
正如您所見,Fisher 套件管理器確實非常方便。但是,如果您發現自己不滿意或在使用 Fisher 時遇到問題,徹底卸載它可能是最好的選擇。
要從您的 fish shell 中全面卸載 Fisher,請完成以下步驟:
執行下面的命令以透過 Fisher 列出
和 移除
fisher
和所有已安裝的插件。

或者,執行以下命令以僅 移除
fisher
本身。

探索 Oh My Fish 套件管理器
當您已經和 Fisher 一起巡航時,為什麼要考慮 Oh My Fish?您已經體驗了使用 Fisher 的 fish shell 插件的威力。但這是一個關鍵:這個框架為 fish shell 開啟了一個新的定制領域,提供了豐富的主題和插件集合。
想要知道 Oh My Fish 為您提供了什麼,首先使用以下命令安裝這個套件管理器:
運行以下 curl
命令在 fish
shell 內下載並運行 Oh My Fish 安裝腳本 (https://get.oh-my.fish
)。
如果成功,您將會得到類似以下的輸出。

安裝完成後,執行以下 omf
命令來檢查 Oh My Fish 的安裝版本。
A successful response, as shown below, indicates that Oh My Fish is ready and waiting to transform your fish shell experience.

使用 Oh My Fish 主題定制環境
厭倦了一成不變的 fish shell 外觀嗎?為什麼不添加一點個性?使用 Oh My Fish 提供的新鮮、個性化的主題來為您的 fish shell 環境進行改造。
要定制您的 fish shell 環境,您必須按照以下步驟安裝主題:
1. 打開 fish 配置文件,刪除定義您提示如何顯示的 fish_prompt
函數。這樣做可以確保您設置的自定義提示不會與 Oh My Fish 提供的主題發生衝突或覆蓋。
? 主題配備了獨特的提示,對於它們的外觀和功能至關重要。禁用您的自定義提示(
fish_prompt
)可確保您選擇的 Oh My Fish 主題完全整合其設計和功能到您的 fish shell 中。
2. 接下來,刪除(rm
)~/.config/fish/functions/fish_prompt.fish
文件。此命令不會產生輸出,但刪除此文件可確保 fish shell 恢復到其默認提示。
3. 執行此 source
命令以使 fish 配置文件中的更改生效。

4. 現在,執行以下 omf
命令來發現您的 fish shell 的完美 theme
。
選擇一個您希望整合到 fish shell 中的主題(例如:cbjohnson)。
? 在安裝它們之前,請訪問官方 GitHub 存儲庫了解 Oh My Shell 主題 的外觀。

? 通過運行以下命令安裝插件來增強您的 fish shell。訪問 OMF GitHub 存儲庫 查看要安裝的插件列表。
omf install <plugin_name>
5. 然後,執行以下命令來 安裝
您在第四步中選擇的主題(cbjohnson
)。
安裝後,您的提示立即更改,如下所示。

? 提示:當你有兩個或更多的主題時,可以通過運行以下命令快速切換主題:
omf theme <主題名稱>
卸載 Oh My Fish
Oh My Fish 是一個增添你的終端機氛圍的寶石。但如果你想要改變風景或試試新的東西,卸載 Oh My Fish 將給你的 fish shell 帶來一個全新的開始。
要卸載 Oh My Fish,請執行以下操作:
1. 執行以下rm
命令來刪除所有與 Oh My Fish 相關的文件。
刪除後,你將看到最初安裝的主題消失。

2. 接下來,執行以下每個命令來刪除更多與 Oh My Fish 相關的文件。
這些命令沒有輸出,但刪除這些文件可以確保從系統中完全刪除 Oh My Fish 的所有殘留物。
3. 現在,運行以下omf
命令來驗證刪除操作。
你將看到像下面這樣的錯誤,說明找不到omf
命令,並且 Oh My Fish 已被完全卸載。

設置 Fish 為默認 Shell
如果你喜歡 fish shell 增強你的 Linux 體驗,為什麼不將它設置為默認 shell 呢?這樣,每次啟動新的終端時,你就省去了切換的麻煩。
要將 fish 設置為默認 shell,請完成以下步驟:
1. 執行以下命令以找到 which
路徑所在的 fish
shell。
將該路徑複製到剪貼板,因為您在接下來的步驟中會需要它。

2. 接下來,執行以下命令將 fish 添加到可接受的 shell 列表中,位於 /etc/shells
。

3. 最後,執行以下 chsh
命令來將您的默認 shell 更改為 fish(/usr/bin/fish
)。
重新啟動您的機器後,您將以 fish 為默認 shell。

? 提示: 通過重複本節中的所有步驟,將 shell 從 fish 切換回另一個 shell(例如 Bash)作為默認 shell。確保在步驟二和步驟三中指定 Bash 的路徑,然後重新啟動您的機器以應用更改。。