跳至內容

Fish

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 13:09 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

fish( 英語:friendlyinteractiveshell ) 是一个 Unix shell。fish 旨咧成做一个比其他 shell 互動性閣較強、使用者體驗閣較好的 shell,並且予其實豐富的強大功能會使予使用者去輕鬆發現、記予牢而且用致使用。fish 的語法既然無衍生 Bourne shell 嘛無衍生 C Shell,故被分類做一種「外來」shell。是有別於為節約系統資源預設禁用部份功能的其他 shell,fish 的全部功能攏是預設啟用的。

特色

fish 有根據使用者的輸入歷史佮當前所在的 kha-tá-lok-guh 提供即時的自動完成。佮 bash 的類似功能 ` Ctrl ` + ` R ` 歷史搜揣相比,這款毋免直直換模式猶閣會當用方向鍵選擇建議項的做法使用者會當閣較順序進行輸入。

fish 嘛真有功能豐富 Tab 補全功能。fish 會當自動補全檔案路徑、變數佮袂少命令的參數,而且支援路草萬用字元佮 C shell 的花括號展開。fish 某一種意義上會通過分析命令的 man 文件成佮之相關的補全。

fish 行對使用命令來代替語法結構。因為命令相比語法結構閣較方便佇咧 shell 內查著幫助內容,fish 的功能真容易咧使用過程中予使用者家己發現。fish 允准子程式提供對家己的說明,進一步免去矣來回走揣幫助的麻煩。fish 猶閣允准使用者佇咧有圖形化使用者介面的瀏覽器內檢視幫助。

語法

fish 的語法類似其他相容 POSIX 的 shell,毋過因為其開發者認為 POSIX shell 設計了有問題,fish 的語法又閣佮 POSIX shell 有相當的無仝。

無子 shell

其他 shell 的部份語法結構,譬如講管道、子程式佮迴箍,是使用一種叫做子 shell 的方式實現的。所謂子 shell 臨時執行一个用完隨登出的新的子行程。在子 shell 中執行的修改通常無符合一般人的直覺地,袂反映著真正的 shell 上(即沒有函式的副作用)。 fish 無依賴於子 shell 實現其語法結構,故所有內底建命令佇任何語境下跤攏是會正常運作的。

比如講,後述 bash 指令碼會因為子 shell 煞來致使迴圈內底予這个 found 才的值得佇咧登出迴圈了後隨無去需要用另外一種方式來閃避這个問題:

如下的 fish 指令碼無需要煩惱 shell 會影響副作用。

有用的錯誤資訊

fish 會佇咧發生錯誤的時陣清楚的指出錯的位並且予出修正的方法。

通用變數

Fish 有一个名做通用變數的功能。通過利用通用變數,使用者會當佇多個同時咧執行的 fish 實例之間共享一个變數。就算使用者註銷抑是電腦重新啟動,通用變數的值也袂遺失。

其他功能

  • 進階 tab 補全
  • 紮完備的錯誤檢查的語法突顯
  • 支援 X 視窗系統的剪貼簿
  • 是因為 terminfo 的智慧型終端處理
  • 這可搜揣的命令歷史第二版猶加入了如下功能:
  • 自動補全
  • 支援有兩百五十六色
  • 因為網頁的組態功能
  • 會當提升效能閣較濟的內建命令

參考

另外閣有參閱

  • Unix shell
  • shell 對比

外部連結

  • 專案條頁
  • GitHub 上的 fish 倉庫
  • Gitorious 上的 fish 倉庫(無閣用矣)
  • SourceForge 上的 fish 倉庫(無閣用矣)
  • Fish-users-fish 使用者綜合來討論列表
  • bash 到 fish 的命令翻譯對照