哪个 Linux Shell 最好? 5种常见的贝壳比较

快乐使用 bash Linux中的外壳? 还是您更愿意尝试替代方案? 有 tsch、fish、KornShell 和 Z Shell 可供选择。 但是这些流行的 Linux shell 中哪一个最好呢?

什么是 Linux Shell?

通常,当您编写应用程序时,它是使用人类可以理解的高级语言完成的。 这些例子有 C#、Java、C++ 等。信不信由你,您的计算机将所有内容视为 1 和 0,或者众所周知的二进制或机器代码。

然后编译器会将高级语言翻译成二进制文件,如可执行文件。 该二进制文件是您执行以启动所述应用程序的文件。

现在,这是对所发生情况的非常高级的看法; 请记住,您的计算机需要一个翻译层。 这介于你告诉它做什么和它如何理解它之间。

shell 就是所谓的解释器。 与编译器类似,解释器将人类代码翻译成机器代码。 区别之一是口译员一次只做一个陈述。 同时,编译器扫描整个程序并将其全部转换为机器代码。

因此,shell 是您与操作系统 (OS) 交互的接口。 当您在 shell 中键入命令时,它负责解释这些命令并使魔法发生。 复制文件、管道、列出文件等操作都在 shell 的职权范围内。

有几个 Linux shell 可用。 要找出系统上可用的所有 shell,请打开终端并键入:

cat /etc/shells

要找出您当前使用的 shell,请键入:

echo $0

但是您使用的是最好的 Linux shell 吗? 让我们看看有什么可用的。

1. 重击

这是 Linux 用户中最受欢迎的 shell。 如果没有 Bourne-Again Shell,甚至很难想象 shell (bash) 是等式的一部分。 许多 Linux 发行版附带 bash 作为默认外壳,因为 bash 是默认的 GNU shell。 它于 1989 年发布,背后也拥有数十年的健康发展。

Bash 的前身是 The Bourne Shell (sh),它是原始的 Unix shell 之一。 对 sh 程序员来说,一个吸引人的特性是他们可以将他们的脚本直接移植到 bash 完全不变。 Bash 还为其前身提供了一些增强功能:

  • 命令完成
  • 命令历史

通常在线文档会假设您正在使用 bash. 然而,它并非没有缺点——就像任何曾经写过 bash 脚本可以证明! 不是你不能做某事,而是它的读写并不总是特别优雅。

2. KornShell

KornShell 通常被称为 ksh,是一种流行的替代 Linux shell,它起源于 1980 年代的贝尔实验室。 之间没有太多区别 bash 和 ksh,但每个都比另一个具有较小的优势。 Ksh,对于 example, 有 cd old new 命令。 如果你在目录中 /Downloads/foo/bar/one/foobar 你需要去 /Downloads/foo/bar/二/foobar 你只需要输入:

cd one two

ksh 的老手们将通过提及其脚本优势来宣传它的优越性。 这些包括:

  • 更好的循环语法
  • 重复命令的自然方式
  • 关联数组

不像 bash,很难在网上找到 ksh 的帮助。 如果您想尝试 ksh,请输入:

sudo apt install ksh
ksh

3.tcsh

Tcsh 可以追溯到早期的 Unix。 它是 C shell (csh) 的改进版本,具有以下特点:

  • 可编程的命令行完成
  • 命令行编辑
  • 向别名添加参数
  • 简单的命令历史访问

您可以通过键入运行任何命令 !n 在显示的历史记录中将 n 替换为其对应的数字。 tcsh 中的历史选项卡完成通过键入:

!a<TAB>

这将扩展为以字母“a”开头的最后一个命令。 比较而言,在 bash你必须输入 !a:p 首先查看命令,然后 !! 执行它。

要尝试 tcsh,请键入:

sudo apt install tcsh
tcsh

Tcsh 是基于 BSD 的系统(如 FreeBSD)的默认 shell。 tcsh 的最大卖点是它的脚本语言,它对主要使用 C 进行编程的任何人都很有用。这使得 tcsh 可用于制作小型 C 程序的原型,而不会混淆您正在使用的括号等问题。 如果您不断地在 C 编程和 shell 脚本之间切换,这个问题往往会发生。

4. 鱼

在 Linux 的所有严肃性中,fish 团队在他们的项目中嵌入了幽默感。 在他们的网站上,诙谐的标题写着“终于,90 年代的命令行 shell”虽然 fish (“F友好的 一世交互式 ell”) 于 2005 年开发。除了吹捧的“Glorious VGA Color”之外,还有其他外壳的一些增强功能:

  • 语法无效的命令显示为红色
  • 正确的语法以蓝色显示
  • 自动完成建议
  • 根据您机器上的手册页完成命令。

此功能将新安装软件手册页中的语法添加到您的自动完成建议中。 如果您想更熟悉命令行,fish 可能是一个很好的起点。

要对鱼进行采样,请键入:

sudo apt install fish
fish

5.Z壳

许多人会认为这是将最好的外壳留到最后,这是完全可以理解的。 Zsh 与 bash 和 ksh 并结合了其中的许多功能以及 tcsh。 Zsh 特点:

  • 可导航的自动完成列表
  • 出色的拼写纠正
  • 命令行完成
  • 跨终端共享历史
  • 通配符(文件名的通配符)

zsh 中的 globbing 非常有用。 打字:

vim /u/l/b/a<TAB>

将打开文件:

/usr/local/bin/autoupdate.sh

如果您不使用默认配置,Zsh 可能需要一段时间才能在首次使用时进行配置。 要试一试,请输入:

sudo apt install zsh
zsh

哪种 Linux Shell 最适合我?

这些选项可用的事实非常棒。 每一个都是对计算历史的一瞥,程序员决定他们想以自己的方式做事。

这些 shell 之间的实质性差异可以在脚本语法中找到。 每个外壳都有一组特定的细微差别 将它们彼此分开。 就目前而言, bash 在市场份额方面占主导地位,这使得寻求帮助变得更加简单。 Bash 简直是最好的多面手,可以满足除最高级用户之外的所有用户的需求。

当您决定使用 Linux shell 时,请确保您熟悉 shell 脚本的基础知识。