自從70年代Unix系統(tǒng)誕生以來,它就一直吸引著全世界的目光。幫助Linux和BSD發(fā)行版確保其當前地位的基本特性之一是Linux shell。由于其強大的功能和多樣的應用程序,shell是許多Linux愛好者的必備工具之一。它是操作系統(tǒng)的命令行接口,允許您根據(jù)自己的條件執(zhí)行任何類型的操作。此外,Linux shell不僅是一個接口,而且是一種具有自己的語法和語義集的成熟腳本語言。
常用的Linux shell
Linux為高級用戶提供了一些最好的開源shell,這些用戶總是希望為自己的武器庫添加新的工具包。這反過來又使許多日常用戶很難選擇特定的shell。我們冒昧地為Linux用戶列出了一些最好的免費開源shell。請仔細閱讀本文,找出最適合您的Linux shell。
1、sh Shell
Bourne Shell或“sh”是歷史悠久的Unix操作系統(tǒng)忠第一個流行的 Shell。sh 是 UNIX 上的標準 shell,它的創(chuàng)建者Stephen Bourne于1977年在AT&T貝爾實驗室開發(fā)了它,自那時以來,它已隨大多數(shù)早期的Unix系統(tǒng)一起提供。 Bourne Shell從它使用的腳本擴展名中獲得了簡短的形式,它要求用戶以sh結束腳本名。它為許多流行的未來Shell設置了標準,包括重定向,腳本功能和強大的語言構造。
Bourne Shell的功能
- Bourne Shell的默認Shell提示符是$符號,它是第一個使用此字符作為提示符的Shell。
- 它具有對輸入輸出重定向,Unicode,流重定向,批處理腳本等的內(nèi)置支持。
- 盡管最初的1977年版本的shell是私有的,但它已經(jīng)公開提供了源代碼。
- sh shell是高度可配置的,可以進行修改以輕松匹配不同的系統(tǒng)標準。
2、Bash Shell
Bash被廣泛稱為Bourne Again Shell,它可能是現(xiàn)代Unix機器上使用最多的Linux Shell。如果您使用的是標準Linux發(fā)行版(例如Ubuntu或Arch),則您使用的默認Shell是Bash Shell。這種開源Linux shell以其強大的功能集和可用性而在社區(qū)中廣為人知。因此,大多數(shù)Linux用戶在一生中的某一時刻都運行Bash。
Bash Shell的功能
- Bash提供的命令行編輯功能非常出色,并且提供了無限的命令歷史記錄。
- Bash提供了強大的shell函數(shù),別名,作業(yè)控制機制,輸入輸出重定向,ISO 8061支持以及Unicode支持。
- 這個開源Linux shell為命令名、路徑、通配符提供了自動完成支持,并允許在文本高亮顯示的同時顯示彩色目錄清單。
- Bash可以執(zhí)行從2到64的任何基數(shù)的整數(shù)運算,并允許具有無限大小的索引數(shù)組。
3、C Shell
C shell或“csh”是最古老的開源Unix shell之一。它是由UCB當時的研究生Bill Joy在70年代開發(fā)的。從那時起,csh附帶了許多Unix變體,尤其是各種BSD。它為解釋器合并了類似于C的語法,由于原始的Unix系統(tǒng)和現(xiàn)代Linux內(nèi)核大部分都是用C/C++編寫的,因此對許多人來說都是有幫助的。
C Shell的功能
- C Shell提供了創(chuàng)新的歷史記錄機制,作業(yè)控制過程,交互式文件名和用戶名補全以及類似C的語法。
- 它允許高級用戶將其用作交互式登錄Shell或Shell腳本的命令處理器。
- Linux C Shell使用的默認Shell提示符是“%”符號,與許多Bash用戶熟悉的“ $”符號相反。
- C Shell使用戶能夠搜索和替換變量替換以及基于通配符的匹配模式。
4、Korn Shell
Korn Shell或ksh可以說是當今Linux最受歡迎的開源Shell之一。它是由David Korn在傳奇的貝爾實驗室開發(fā)的,他從C Shell的交互性和Bash Shell的互動式中獲得了啟發(fā)。由于其先進的功能,包括高級作業(yè)控制,命令別名,浮點算術以及許多其他功能,自成立之初以來,Korn Shell就已經(jīng)獲得了極大的歡迎。
Korn Shell的功能
- Korn Shell允許用戶使用Ctrl + Z終止當前作業(yè),并使用命令fg和bg將其置于前臺或后臺。
- 它可用于直接將Shell程序代碼存儲在內(nèi)存中,從而提高編程能力和提高性能。
- ksh提供了高級命令行編輯,用戶可以在其中直接從其Shell使用vi或Emacs風格的編輯命令。
- Korn Shell腳本通常比Bourne Shell腳本更快,并提供高級I/O功能以及顯著的安全性機制。
5、Zsh Shell
Zsh Shell是具有許多強大功能的創(chuàng)新型現(xiàn)代Linux Shell。它是在Bash之上開發(fā)的,并在有效的命令解釋器旁邊提供了一個交互式登錄Shell。 Zsh以其性能而聞名,它在許多方面都大大改善了Linux的許多開源Shell。它還借鑒了90年代其他流行Shell的元素,包括Ksh和TcshShell。如果您是Linux專家,正在尋找高級Linux Shell,請嘗試Zsh。
Zsh Shell的功能
- Zsh的自動完成功能非常智能,并且支持文件和路徑的高度交互式自動完成。
- 這個開源Unix shell的歷史記錄共享機制非常龐大,允許同時運行的許多不同終端實例的共享歷史記錄。
- 用戶可以從其流行的,社區(qū)驅動的框架oh-my-zsh中選擇400多個插件和200多個主題。
- Zsh還支持vi模式,智能轉義,遞歸遍歷,將輸出傳遞到臨時文件,拼寫更正以及許多其他交互式功能。
6、Tcsh Shell
Tcsh shell是C shell的升級版本,它提供可編程命令完成和命令行編輯作為其關鍵功能。它與Csh Shell完全兼容,可以用作交互式登錄Shell和Shell腳本處理器。 Tcsh帶有功能強大的命令行編輯器,現(xiàn)代化的歷史記錄機制,可編程的單詞補全,作業(yè)控制,拼寫檢查支持以及類似于C的語法,后跟Csh。該Unix shell最適合高級程序員。
Tcsh Shell的功能
- Tcsh內(nèi)置了對文件和變量的自動完成以及可編程完成和別名參數(shù)選擇器的支持。
- 當在終端上運行shell腳本時,它允許經(jīng)驗豐富的用戶合并通配符以提高靈活性。
- 該Linux shell的預構建where命令的作用類似于Bash中的which命令,但顯示$PATH目錄中指定的目標的每個位置。
- Tcsh是FreeBSD及其后代(例如DragonFly BSD和DesktopBSD)的默認命令行解釋器。
7、Fish Shell
Fish Shell是一種友好的交互式Unix Shell,旨在替代Linux早期的開源Shell。除Windows操作系統(tǒng)外,每個Linux和BSD發(fā)行版均提供此功能。 Fish提供了一組強大的功能,使您更容易發(fā)現(xiàn),記住和使用計算機上令人興奮的Linux命令。如果您正在尋找Linux桌面的智能命令行Shell,F(xiàn)ish當然值得一試。
Fish Shell的功能
- Fish提供了一個強大的自動建議功能,即根據(jù)命令行歷史和當前目錄進行搜索。
- 其功能豐富的Tav完成功能允許用戶使用通配符和大括號擴展來擴展文件路徑,變量和許多特定于命令的完成。
- Fish內(nèi)置了對24位真彩色的支持,使您的終端會話更加豐富多彩和更具吸引力。
- 對于尋求開箱即用且無需配置的開源shell的人們來說,這是一個很好的shell。
8、Ion Shell
Ion Shell是一個令人著迷的現(xiàn)代Shell,它具有簡單但功能強大的語法,并顯著提高了性能。它是使用Rust編程語言編寫的,因此它不易受到許多Bash用戶遇到的常見“ ShellShcok”問題的影響。Ion從流行的Shell中借鑒了許多設計元素,例如Bash,F(xiàn)ish和Oil。因此,無需花費太多時間即可啟動并運行此出色的shell。
Ion Shell的功能
- Ion Shell比Dash快,而Dash本身比當今大多數(shù)Linux機器使用的標準Bash Shell快四倍。
- 由于是用Rust編寫的,所以Ion提供了比傳統(tǒng)的基于C/C++的Unix命令行Shell更高的內(nèi)存安全性。
- Ion具有對字符串,數(shù)組,glob,大括號(范圍,排列,嵌套大括號),算術和過程的內(nèi)置擴展支持。
- 它簡單,干凈和簡潔的設計使其相對易于使用,并允許用戶將shell編譯為靜態(tài)二進制文件。
9、Dash shell
Dash shell是Debian Almquist shell(Dash)的縮寫,并且是Debian操作系統(tǒng)的默認命令行解釋器。它比標準的GNU Bash shell小得多,但仍然以POSIX兼容為目標。 Dash在移植到Linux生態(tài)系統(tǒng)之前已經(jīng)從NetBSD版本的ash(Almquist SHell)衍生而來,并且比傳統(tǒng)的Unix shell具有顯著的性能提升。 Dash比大多數(shù)Shell更快,并且需要更少的空間和更少的庫。
Dash shell的功能
- Dash是Linux最快的開源Shell之一,其時鐘速度幾乎是Bash和其他標準Shell的四倍。
- Dash的簡約設計使其比日常的命令行解釋器小得多,并且只要有限的系統(tǒng)資源(磁盤空間,RAM或CPU)。
- 由于Dash的代碼庫明顯較小,因此Dash的受攻擊面較小,并且對于頻繁的Shell攻擊非常安全。
- Ubuntu或Debian系統(tǒng)用戶可以在終端窗口中輸入man dash來找到有關Dash的更多信息。
10、Eshell
Eshell是使用Emacs Lisp編寫的一種方便的命令行解釋器程序,其目的是在提供對Lisp代碼的無縫支持的同時具有高度的可移植性。它提供了大量日常功能,包括自動完成,歷史記錄管理,作業(yè)控制機制等等。 Eshell附帶的腳本結構非常簡單,可以正確完成工作。如果您是Lisp程序員或前衛(wèi)的Emacs愛好者,那么Eshell可以成為您理想的Linux Shell。
Eshell的功能
- Eshell不是一個獨立的終端模擬器,而是一個日常shell,可以使用Emacs的功能與您的計算機進行通信。
- 到目前為止,它不直接支持交互???程序,因此您需要在單獨的ANSI術語實例中調用它們。
- Eshell對歷史記錄修改和交互的默認支持非常好,其語法在某種程度上類似于Bash和Zsh。
- 用戶可以通過修改eshell-prompt-function變量來自定義Eshell,該變量定義了提示在系統(tǒng)中的行為。
11、rc Shell
rc shell是經(jīng)典的命令行解釋器,與Bourne shell極為相似。但是,與Bourne Shell相比,它具有某種簡單的結構。這是因為rc使用類似C的控制結構,而不是sh使用類似ALGOL的語法。 Tom Duff是該Unix Shell的主要開發(fā)人員,以其高質量的程序設計和出色的解決問題能力而聞名。
rc Shell的功能
- rc使用if not scripting結構而不是vanilla else,并提供與在Bourne shell中使用的for循環(huán)相同的for循環(huán)。
- 盡管rc的輸入規(guī)則很弱,但是它結合了強大的機制來操縱變量。
- rc相當輕巧,因此比許多傳統(tǒng)的Linux開源shell更快。
- 它具有對異常處理,搜索和替換機制,模式匹配等的出色支持。
12、Scsh Shell
Scheme Shell或Scsh是可移植的命令行Shell,可用于Linux和BSD之外的各種操作系統(tǒng)。它與Scheme編程接口分層放置,旨在輕松編寫真實的Unix程序。它可以用來為應用程序和標準操作系統(tǒng)程序編寫高效的腳本。它帶有對管道的內(nèi)置支持,輸入輸出重定向,符號鏈接,BSD套接字,正則表達式模式以及許多其他令人興奮的功能。
[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install mit-scheme
Scsh Shell的功能
- Scheme Shell對日常腳本構造(例如列表,字符和字符串)具有出色的庫支持。
- 在操作正則表達式時,用戶可以選擇使用Scheme正則表達式,域特定語言(DSL)或少量語言。
- 這個開源shell提供的網(wǎng)絡支持確實是一流的,并且與許多應用程序相比,速度更快。
- 支持偽終端,awk之類的腳本,宏,智能搜索以及更多替換功能。
13、Xonsh Shell
Xonsh是受Python腳本語言支持的現(xiàn)代Linux shell。如果您想知道是否可以將Python解釋器用作Unix shell,那么Xonsh可以讓您做到這一點。該語言已作為Python 3.5+的超集構建,并提供了您在Bash和iPython中經(jīng)常使用的大量shell原語。
Xonsh Shell的功能
- Xonsh被開發(fā)為一種健全的語言,它對包括Linux,Mac OSX和Windows在內(nèi)的一系列操作系統(tǒng)提供了原生支持。
- 此shell的制表符完成功能非常出色,還支持手冊頁解析中的完成。
- 熟悉Python的用戶會發(fā)現(xiàn)Xonsh非常適合,因為其語法與Python非常相似。
- 它帶有一個龐大的庫,可以立即提供許多日常原語。
14、Oh Shell
Oh,這是現(xiàn)代Linux用戶的絕佳開源Shell程序。盡管乍看之下它看上去與傳統(tǒng)的Unix shell非常相似,但是在編程方面卻與之不同。 Oh是使用Golang開發(fā)的,可提供高質量的原生并發(fā)支持。但是,Oh的核心是Scheme編程語言的一個經(jīng)過極端修改的實例。它還對代碼,數(shù)據(jù),管道和通道使用相同的語法-允許最終用戶在其腳本中互換使用它們。
Oh Shell的功能
- Shell本身是使用Go構建的,但是編程結構是Scheme編程語言的方言。
- 在支持并發(fā)方面,哦是最好的Unix shell之一。
- 它把管道旁邊的通道作為一流的值來處理,并具有簡潔的語法結構。
- 哦,允許公共和私人成員,并將它們用作基于原型的對象系統(tǒng)的基礎。
15、Elvish shell
自從幾個月前嘗試使用Elvish Shell以來,它是我最喜歡的Linux開源shell之一。這是一個真正出色的命令行解釋器,可讓您在計算機上執(zhí)行各種操作。從操縱系統(tǒng)本身到編寫雄辯的腳本,Elvish均可用于完成大量任務。它帶有豐富的健壯函數(shù)庫,可用于字符串處理,正則表達式匹配,JSON解析,聯(lián)網(wǎng)等。
Elvish shell的功能
- Elvish管道允許系統(tǒng)與標準文本數(shù)據(jù)一起流式傳輸諸如列表,地圖甚至功能之類的結構化數(shù)據(jù)。
- 它帶有類似C的熟悉語法,對于經(jīng)驗豐富的Linux用戶而言,使用Elvish編寫腳本非常直觀。
- Elvish是使用Go編程語言編寫的,因此與其他Unix Shell相比,它是類型安全的。
- 該Unix Shell附帶了一個預構建的文件管理器,使系統(tǒng)管理更加舒適。
總結
由于Linux不斷發(fā)展的生態(tài)系統(tǒng)提供了許多強大的開源Shell,因此為您選擇合適的Linux Shell通常是一項艱巨的任務。因此,我們員遍歷了您可以找到的所有流行選擇,并為您編寫了此便捷指南。由于人們對不同種類的Shell有不同的偏好,因此最適合您的Shell完全取決于您。我們鼓勵讀者根據(jù)自己的要求嘗試其中一些shell,并親自獲得第一手經(jīng)驗,讓后把妮的想法說出來,謝謝。