Linux为高级用户提供了一些最好的开源shell,这些用户总是希望为自己的武器库添加新的工具包。这反过来又使许多日常用户很难选择特定的shell。我们冒昧地为Linux用户列出了一些最好的免费开源shell。请仔细阅读本文,找出最适合您的Linux shell。
1、sh Shell
Bourne Shell或“sh”是历史悠久的Unix操作系统忠第一个流行的 Shell。sh 是 UNIX 上的标准 shell,它的创建者Stephen Bourne于1977年在AT&T贝尔实验室开发了它,自那时以来,它已随大多数早期的Unix系统一起提供。 Bourne Shell从它使用的脚本扩展名中获得了简短的形式,它要求用户以sh结束脚本名。它为许多流行的未来Shell设置了标准,包括重定向,脚本功能和强大的语言构造。
Bourne Shell的功能
Bourne Shell的默认Shell提示符是$符号,它是第一个使用此字符作为提示符的Shell。
它具有对输入输出重定向,Unicode,流重定向,批处理脚本等的内置支持。
尽管最初的1977年版本的shell是私有的,但它已经公开提供了源代码。
sh shell是高度可配置的,可以进行修改以轻松匹配不同的系统标准。
2、Bash Shell
Bash被广泛称为Bourne Again Shell,它可能是现代Unix机器上使用最多的Linux Shell。如果您使用的是标准Linux发行版(例如Ubuntu或Arch),则您使用的默认Shell是Bash Shell。这种开源Linux shell以其强大的功能集和可用性而在社区中广为人知。因此,大多数Linux用户在一生中的某一时刻都运行Bash。
Bash Shell的功能
Bash提供的命令行编辑功能非常出色,并且提供了无限的命令历史记录。
Bash提供了强大的shell函数,别名,作业控制机制,输入输出重定向,ISO 8061支持以及Unicode支持。
这个开源Linux shell为命令名、路径、通配符提供了自动完成支持,并允许在文本高亮显示的同时显示彩色目录清单。
Bash可以执行从2到64的任何基数的整数运算,并允许具有无限大小的索引数组。
3、C Shell
C shell或“csh”是最古老的开源Unix shell之一。它是由UCB当时的研究生Bill Joy在70年代开发的。从那时起,csh附带了许多Unix变体,尤其是各种BSD。它为解释器合并了类似于C的语法,由于原始的Unix系统和现代Linux内核大部分都是用C/C++编写的,因此对许多人来说都是有帮助的。
C Shell的功能
C Shell提供了创新的历史记录机制,作业控制过程,交互式文件名和用户名补全以及类似C的语法。
它允许高级用户将其用作交互式登录Shell或Shell脚本的命令处理器。
Linux C Shell使用的默认Shell提示符是“%”符号,与许多Bash用户熟悉的“ $”符号相反。
C Shell使用户能够搜索和替换变量替换以及基于通配符的匹配模式。
4、Korn Shell
Korn Shell或ksh可以说是当今Linux最受欢迎的开源Shell之一。它是由David Korn在传奇的贝尔实验室开发的,他从C Shell的交互性和Bash Shell的互动式中获得了启发。由于其先进的功能,包括高级作业控制,命令别名,浮点算术以及许多其他功能,自成立之初以来,Korn Shell就已经获得了极大的欢迎。
Korn Shell的功能
Korn Shell允许用户使用Ctrl + Z终止当前作业,并使用命令fg和bg将其置于前台或后台。
它可用于直接将Shell程序代码存储在内存中,从而提高编程能力和提高性能。
ksh提供了高级命令行编辑,用户可以在其中直接从其Shell使用vi或Emacs风格的编辑命令。
Korn Shell脚本通常比Bourne Shell脚本更快,并提供高级I/O功能以及显着的安全性机制。
5、Zsh Shell
Zsh Shell是具有许多强大功能的创新型现代Linux Shell。它是在Bash之上开发的,并在有效的命令解释器旁边提供了一个交互式登录Shell。 Zsh以其性能而闻名,它在许多方面都大大改善了Linux的许多开源Shell。它还借鉴了90年代其他流行Shell的元素,包括Ksh和TcshShell。如果您是Linux专家,正在寻找高级Linux Shell,请尝试Zsh。
Zsh Shell的功能
Zsh的自动完成功能非常智能,并且支持文件和路径的高度交互式自动完成。
这个开源Unix shell的历史记录共享机制非常庞大,允许同时运行的许多不同终端实例的共享历史记录。
用户可以从其流行的,社区驱动的框架oh-my-zsh中选择400多个插件和200多个主题。
Zsh还支持vi模式,智能转义,递归遍历,将输出传递到临时文件,拼写更正以及许多其他交互式功能。
6、Tcsh Shell
Tcsh shell是C shell的升级版本,它提供可编程命令完成和命令行编辑作为其关键功能。它与Csh Shell完全兼容,可以用作交互式登录Shell和Shell脚本处理器。 Tcsh带有功能强大的命令行编辑器,现代化的历史记录机制,可编程的单词补全,作业控制,拼写检查支持以及类似于C的语法,后跟Csh。该Unix shell最适合高级程序员。
Tcsh Shell的功能
Tcsh内置了对文件和变量的自动完成以及可编程完成和别名参数选择器的支持。
当在终端上运行shell脚本时,它允许经验丰富的用户合并通配符以提高灵活性。
该Linux shell的预构建where命令的作用类似于Bash中的which命令,但显示$PATH目录中指定的目标的每个位置。
Tcsh是FreeBSD及其后代(例如DragonFly BSD和DesktopBSD)的默认命令行解释器。
7、Fish Shell
Fish Shell是一种友好的交互式Unix Shell,旨在替代Linux早期的开源Shell。除Windows操作系统外,每个Linux和BSD发行版均提供此功能。 Fish提供了一组强大的功能,使您更容易发现,记住和使用计算机上令人兴奋的Linux命令。如果您正在寻找Linux桌面的智能命令行Shell,Fish当然值得一试。
Fish Shell的功能
Fish提供了一个强大的自动建议功能,即根据命令行历史和当前目录进行搜索。
其功能丰富的Tav完成功能允许用户使用通配符和大括号扩展来扩展文件路径,变量和许多特定于命令的完成。
Fish内置了对24位真彩色的支持,使您的终端会话更加丰富多彩和更具吸引力。
对于寻求开箱即用且无需配置的开源shell的人们来说,这是一个很好的shell。
8、Ion Shell
Ion Shell是一个令人着迷的现代Shell,它具有简单但功能强大的语法,并显着提高了性能。它是使用Rust编程语言编写的,因此它不易受到许多Bash用户遇到的常见“ ShellShcok”问题的影响。Ion从流行的Shell中借鉴了许多设计元素,例如Bash,Fish和Oil。因此,无需花费太多时间即可启动并运行此出色的shell。
Ion Shell
Ion Shell的功能
Ion Shell比Dash快,而Dash本身比当今大多数Linux机器使用的标准Bash Shell快四倍。
由于是用Rust编写的,所以Ion提供了比传统的基于C/C++的Unix命令行Shell更高的内存安全性。
Ion具有对字符串,数组,glob,大括号(范围,排列,嵌套大括号),算术和过程的内置扩展支持。
它简单,干净和简洁的设计使其相对易于使用,并允许用户将shell编译为静态二进制文件。
9、Dash shell
Dash shell是Debian Almquist shell(Dash)的缩写,并且是Debian操作系统的默认命令行解释器。它比标准的GNU Bash shell小得多,但仍然以POSIX兼容为目标。 Dash在移植到Linux生态系统之前已经从NetBSD版本的ash(Almquist SHell)衍生而来,并且比传统的Unix shell具有显著的性能提升。 Dash比大多数Shell更快,并且需要更少的空间和更少的库。
Dash shell的功能
Dash是Linux最快的开源Shell之一,其时钟速度几乎是Bash和其他标准Shell的四倍。
Dash的简约设计使其比日常的命令行解释器小得多,并且只要有限的系统资源(磁盘空间,RAM或CPU)。
由于Dash的代码库明显较小,因此Dash的受攻击面较小,并且对于频繁的Shell攻击非常安全。
Ubuntu或Debian系统用户可以在终端窗口中输入man dash来找到有关Dash的更多信息。
10、Eshell
Eshell是使用Emacs Lisp编写的一种方便的命令行解释器程序,其目的是在提供对Lisp代码的无缝支持的同时具有高度的可移植性。它提供了大量日常功能,包括自动完成,历史记录管理,作业控制机制等等。 Eshell附带的脚本结构非常简单,可以正确完成工作。如果您是Lisp程序员或前卫的Emacs爱好者,那么Eshell可以成为您理想的Linux Shell。
Eshell的功能
Eshell不是一个独立的终端模拟器,而是一个日常shell,可以使用Emacs的功能与您的计算机进行通信。
到目前为止,它不直接支持交互程序,因此您需要在单独的ANSI术语实例中调用它们。
Eshell对历史记录修改和交互的默认支持非常好,其语法在某种程度上类似于Bash和Zsh。
用户可以通过修改eshell-prompt-function变量来自定义Eshell,该变量定义了提示在系统中的行为。
11、rc Shell
rc shell是经典的命令行解释器,与Bourne shell极为相似。但是,与Bourne Shell相比,它具有某种简单的结构。这是因为rc使用类似C的控制结构,而不是sh使用类似ALGOL的语法。 Tom Duff是该Unix Shell的主要开发人员,以其高质量的程序设计和出色的解决问题能力而闻名。
rc Shellrc Shell
rc Shell的功能
rc使用if not scripting结构而不是vanilla else,并提供与在Bourne shell中使用的for循环相同的for循环。
尽管rc的输入规则很弱,但是它结合了强大的机制来操纵变量。
rc相当轻巧,因此比许多传统的Linux开源shell更快。
它具有对异常处理,搜索和替换机制,模式匹配等的出色支持。
12、Scsh Shell
Scheme Shell或Scsh是可移植的命令行Shell,可用于Linux和BSD之外的各种操作系统。它与Scheme编程接口分层放置,旨在轻松编写真实的Unix程序。它可以用来为应用程序和标准操作系统程序编写高效的脚本。它带有对管道的内置支持,输入输出重定向,符号链接,BSD套接字,正则表达式模式以及许多其他令人兴奋的功能。
[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install mit-scheme
Scsh Shell的功能
Scheme Shell对日常脚本构造(例如列表,字符和字符串)具有出色的库支持。
在操作正则表达式时,用户可以选择使用Scheme正则表达式,域特定语言(DSL)或少量语言。
这个开源shell提供的网络支持确实是一流的,并且与许多应用程序相比,速度更快。
支持伪终端,awk之类的脚本,宏,智能搜索以及更多替换功能。
13、Xonsh Shell
Xonsh是受Python脚本语言支持的现代Linux shell。如果您想知道是否可以将Python解释器用作Unix shell,那么Xonsh可以让您做到这一点。该语言已作为Python 3.5+的超集构建,并提供了您在Bash和iPython中经常使用的大量shell原语。
Xonsh Shell的功能
Xonsh被开发为一种健全的语言,它对包括Linux,Mac OSX和Windows在内的一系列操作系统提供了原生支持。
此shell的制表符完成功能非常出色,还支持手册页解析中的完成。
熟悉Python的用户会发现Xonsh非常适合,因为其语法与Python非常相似。
它带有一个庞大的库,可以立即提供许多日常原语。
14、Oh Shell
Oh,这是现代Linux用户的绝佳开源Shell程序。尽管乍看之下它看上去与传统的Unix shell非常相似,但是在编程方面却与之不同。 Oh是使用Golang开发的,可提供高质量的原生并发支持。但是,Oh的核心是Scheme编程语言的一个经过极端修改的实例。它还对代码,数据,管道和通道使用相同的语法-允许最终用户在其脚本中互换使用它们。
Oh Shell的功能
Shell本身是使用Go构建的,但是编程结构是Scheme编程语言的方言。
在支持并发方面,哦是最好的Unix shell之一。
它把管道旁边的通道作为一流的值来处理,并具有简洁的语法结构。
哦,允许公共和私人成员,并将它们用作基于原型的对象系统的基础。
15、Elvish shell
自从几个月前尝试使用Elvish Shell以来,它是我最喜欢的Linux开源shell之一。这是一个真正出色的命令行解释器,可让您在计算机上执行各种操作。从操纵系统本身到编写雄辩的脚本,Elvish均可用于完成大量任务。它带有丰富的健壮函数库,可用于字符串处理,正则表达式匹配,JSON解析,联网等。
Elvish shell的功能
Elvish管道允许系统与标准文本数据一起流式传输诸如列表,地图甚至功能之类的结构化数据。
它带有类似C的熟悉语法,对于经验丰富的Linux用户而言,使用Elvish编写脚本非常直观。
Elvish是使用Go编程语言编写的,因此与其他Unix Shell相比,它是类型安全的。
该Unix Shell附带了一个预构建的文件管理器,使系统管理更加舒适。
总结
由于Linux不断发展的生态系统提供了许多强大的开源Shell,因此为您选择合适的Linux Shell通常是一项艰巨的任务。因此,我们员遍历了您可以找到的所有流行选择,并为您编写了此便捷指南。由于人们对不同种类的Shell有不同的偏好,因此最适合您的Shell完全取决于您。