不用先配外掛就有補全,fish shell 能省下多少事

摘要

fish shell 把互動體驗放在第一位:輸入時就有來自歷史的建議、命令列即時著色、歷史可搜尋,補全還能補參數、分支與行程名稱。代價是一套自己的腳本語法,與 bash 不相容。

推薦
軟體名稱
fish shell
版本
4.9.3
收費
免費
開源
開源
作業系統
WindowsmacOSLinux
更新時間
2026-10-06 16:02

開箱即用的那一套

fish(friendly interactive shell)是一款把互動體驗放在第一位的命令列 shell。它和 bash、zsh 最大的差別在於「裝上就是配置好的」:輸入命令時下方會直接給出來自歷史的建議,按方向鍵就能採納;命令列內容即時著色,命令是否存在、路徑是否有效,敲的時候就看得到;補全不只補檔名,還能補命令參數、版本控制分支、行程名稱,而且有可翻頁的說明清單。

這件事的意義很容易被低估。在其他 shell 上,這套行為有一半是透過外掛、框架,以及一份必須自己拼裝並持續維護的設定檔才有的。在這裡,它是程式在任何人動手設定之前的狀態,也就是說,好處在第一分鐘就到了,而不是在第一個週末之後。

輸入時的建議

互動上的幾處細節

歷史記錄可以用關鍵字搜尋,也能按前綴直接調出上一條同類命令;標籤補全與萬用字元展開都支援視覺化預覽。縮寫是它很有用的一項:把常用的長命令定義成幾個字元,展開後仍然是看得見的完整命令——不像 alias 那樣把真實內容藏在短名後面,讓看歷史紀錄的人只能猜。

提示符、配色與函式都能在瀏覽器裡用內建的設定頁調整,改完立即生效。這是一個很小的設計決定,後果卻很實在:手改設定檔需要知道它在哪、語法是什麼、打錯字怎麼救,而這三個條件裡任何一個,都足以讓人把預設值留上好幾年。

命令列的著色

腳本這塊要提前知道

代價主要落在腳本上:fish 有一套自己的語法,並不接受 bash。變數賦值用 set,條件判斷以 end 收尾而不是 then 與 fi 這對組合,字串不加引號也不會被拆成多個詞,陣列與路徑的處理規則也不一樣。實際後果是:網路上大量的 bash 片段不能直接貼過來執行,既有的 shell 腳本要嘛改寫,要嘛明確用 bash 去跑。

影響有多大,完全取決於「敲命令」與「寫腳本」的比例。整天敲命令的人,衝擊接近於零,而收穫是每天的;維護一整批腳本的人,遷移成本是真的,該在切換之前算清楚,而不是切換之後才發現。

shell 腳本

版本與平台

4 系列是一個重要節點:整個專案改用 Rust 重寫,官方稱效能與可維護性都有明顯改善,安裝方式也隨構建系統調整。截至目前,穩定版本序列已更新到 4.9.3(2026 年 9 月發布),迭代節奏很快。安裝覆蓋 Windows、macOS 與 Linux,多數發行版的軟體倉庫裡都有打包。設為預設 shell 之前,建議先在當前終端裡試用一段時間——預設 shell 正是那種設錯了很煩、但試用起來很容易的設定。

為什麼「預設好用」比聽起來重要

一個 shell 一天會被用上幾千次,每次只有幾秒,因此任何一點摩擦的成本都會被那個次數放大。一個要先調校才好用的 shell,等於對每一台新機器、每一個新帳號、每一位借你登入的同事都收一筆固定費用。把調校做成預設,不會讓任何一條命令變快;它拿掉的是一項從來不有趣、也總是被延後的維護工作。

不相容帶來的除了技術成本,還有社交成本。關於命令列的共用知識,絕大部分是共用的 bash;一個跑不動那些片段的 shell,等於要求每個使用者同時在腦子裡放兩套語法。對日常舒適來說這是合理的代價,對工作就是一整櫃腳本的團隊來說則不划算——而同一批人完全可能同時站在這條線的兩邊。

受夠了補全要靠一堆設定才好用,這裡的體驗幾乎是一次性的解放:自動建議、即時著色、好用的歷史搜尋,裝完就在。唯一要權衡的是腳本與 bash 不相容——日常敲命令的人幾乎無感,靠腳本吃飯的人得先算清遷移成本。

fish shell下載地址
支援的作業系統: Windows macOS Linux