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