Linux中國

Linux 下五個頂級的開源命令行 Shell

這個世界上有兩種 Linux 用戶:敢於冒險的和態度謹慎的。

其中一類用戶總是本能的去嘗試任何能夠戳中其痛點的新選擇。他們嘗試過不計其數的窗口管理器、系統發行版和幾乎所有能找到的桌面插件。

另一類用戶找到他們喜歡的東西後,會一直使用下去。他們往往喜歡所使用的系統發行版的默認配置。最先熟練掌握的文本編輯器會成為他們最鍾愛的那一個。

作為一個使用桌面版和伺服器版十五年之久的 Linux 用戶,比起第一類來,我無疑屬於第二類用戶。我更傾向於使用現成的東西,如此一來,很多時候我就可以通過文檔和示例方便地找到我所需要的使用案例。如果我決定選擇使用非費標準的東西,這個切換過程一定會基於細緻的研究,並且前提是來自好基友的大力推薦。

但這並不意味著我不喜歡嘗試新事物並且查漏補失。所以最近一段時間,在我不假思索的使用了 bash shell 多年之後,決定嘗試一下另外四個 shell 工具:ksh、tcsh、zsh 和 fish。這四個 shell 都可以通過我所用的 Fedora 系統的默認庫輕鬆安裝,並且他們可能已經內置在你所使用的系統發行版當中了。

這裡對它們每個選擇都稍作介紹,並且闡述下它適合做為你的下一個 Linux 命令行解釋器的原因所在。

bash

首先,我們回顧一下最為熟悉的一個。 GNU Bash,又名 Bourne Again Shell,它是我這些年使用過的眾多 Linux 發行版的默認選擇。它最初發佈於 1989 年,並且輕鬆成長為 Linux 世界中使用最廣泛的 shell,甚至常見於其他一些類 Unix 系統當中。

Bash 是一個廣受讚譽的 shell,當你通過互聯網尋找各種事情解決方法所需的文檔時,總能夠無一例外的發現這些文檔都默認你使用的是 bash shell。但 bash 也有一些缺點存在,如果你寫過 Bash 腳本就會發現我們寫的代碼總是得比真正所需要的多那麼幾行。這並不是說有什麼事情是它做不到的,而是說它讀寫起來並不總是那麼直觀,至少是不夠優雅。

如上所述,基於其巨大的安裝量,並且考慮到各類專業和非專業系統管理員已經適應了它的使用方式和獨特之處,至少在將來一段時間內,bash 或許會一直存在。

ksh

KornShell,或許你對這個名字並不熟悉,但是你一定知道它的調用命令 ksh。這個替代性的 shell 於 80 年代起源於貝爾實驗室,由 David Korn 所寫。雖然最初是一個專有軟體,但是後期版本是在 Eclipse Public 許可下發布的。

ksh 的擁躉們列出了他們覺得其優越的諸多理由,包括更好的循環語法,清晰的管道退出代碼,處理重複命令和關聯數組的更簡單的方式。它能夠模擬 vi 和 emacs 的許多行為,所以如果你是一個重度文本編輯器患者,它值得你一試。最後,我發現它雖然在高級腳本方面擁有不同的體驗,但在基本輸入方面與 bash 如出一轍。

tcsh

tcsh 衍生於 csh(Berkely Unix C shell),並且可以追溯到早期的 Unix 和計算機時代開始。

tcsh 最大的賣點在於它的腳本語言,對於熟悉 C 語言編程的人來說,看起來會非常親切。tcsh 的腳本編寫有人喜歡,有人憎惡。但是它也有其他的技術特色,包括可以為 aliases 添加參數,各種可能迎合你偏好的默認行為,包括 tab 自動完成和將 tab 完成的工作記錄下來以備後查。

tcsh 以 BSD 許可發布。

zsh

zsh 是另外一個與 bash 和 ksh 有著相似之處的 shell。誕生於 90 年代初,zsh 支持眾多有用的新技術,包括拼寫糾正、主題化、可命名的目錄快捷鍵,在多個終端中共享同一個命令歷史信息和各種相對於原來的 bash 的輕微調整。

雖然部分需要遵照 GPL 許可,但 zsh 的代碼和二進位文件可以在一個類似 MIT 許可證的許可下進行分發; 你可以在 actual license 中查看細節。

fish

之前我訪問了 fish 的主頁,當看到 「好了,這是一個為 90 後而生的命令行 shell」 這條略帶調侃的介紹時(fish 完成於 2005 年),我就意識到我會愛上這個交互友好的 shell 的。

fish 的作者提供了若干切換過來的理由,這些理由有點小幽默並且能戳中笑點,不過還真是那麼回事。這些特性包括自動建議(「注意, Netscape Navigator 4.0 來了」,LCTT 譯註:NN4 是一個重要版本。),支持「驚人」的 256 色 VGA 調色,不過也有真正有用的特性,包括根據你機器上的 man 頁面自動補全命令,清除腳本和基於 web 界面的配置方式。

fish 的許可主要基於 GPLv2,但有些部分是在其他許可下的。你可以查看資源庫來了解完整信息

如果你想要尋找關於每個選擇確切不同之處的詳盡綱要,這個網站應該可以幫到你。

我的立場到底是怎樣的呢?好吧,最終我應該還是會重新投入 bash 的懷抱,因為對於大多數時間都在使用命令行交互的人來說,切換過程對於編寫高級的腳本能帶來的好處微乎其微,並且我已經習慣於使用 bash 了。

但是我很慶幸做出了敞開大門並且嘗試新選擇的決定。我知道門外還有許許多多其他的東西。你嘗試過哪些 shell,更中意哪一個?請在評論里告訴我們。

via: https://opensource.com/business/16/3/top-linux-shells

作者:Jason Baker 譯者:mr-ping 校對: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中國