自从70年代Unix系统诞生以来,它就一直吸引着全世界的目光。帮助Linux和BSD发行版确保其当前地位的基本特性之一是Linux shell。由于其强大的功能和多样的应用程序,shell是许多Linux爱好者的必备工具之一。它是操作系统的命令行接口,允许您根据自己的条件执行任何类型的操作。此外,Linux shell不仅是一个接口,而且是一种具有自己的语法和语义集的成熟脚本语言。
常用的Linux shell
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比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 Shell的功能:
- rc使用if not scripting结构而不是vanilla else,并提供与在Bourne shell中使用的for循环相同的for循环。
- 尽管rc的输入规则很弱,但是它结合了强大的机制来操纵变量。
- rc相当轻巧,因此比许多传统的Linux开源shell更快。
- 它具有对异常处理,搜索和替换机制,模式匹配等的出色支持。
12. 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完全取决于您。