我们冒昧地为 Linux 用户列出了一些最好的免费开源 shell. 请仔细阅读本文, 找出最适合您的 Linux shell.
直播: 近二十载从业老兵谈金融科技赋能的探索与实践
自从 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 完全取决于您. 我们鼓励读者根据自己的要求尝试其中一些 shell, 并亲自获得第一手经验, 让后把你的想法说出来, 谢谢.
来源: http://os.51cto.com/art/202004/615029.htm