五款面向Linux的命令行终端工具
Linux用户分为两大类:谨慎的和大胆的。第一类用户找到喜欢的东西后就坚持使用,不会朝三暮四。他们往往喜欢发行版的默认值。如果他们钟情于某个文本编辑器,这肯定是他们先熟练掌握的那个。另一类是几乎条件反射般地想尝试刚出现的新选项的用户。他们试过所能找到的不少窗口管理器、几十个发行版以及几乎每一个新的桌面窗口组件。
作为有15年使用资历的Linux用户(无论服务器端还是桌面端),我绝对属于第一类用户,而不是第二类。我往往不太喜欢新奇的东西,这意味着我通常能找到全面的说明文档以及几乎任何用例的例子。如果我使用另类的东西,会认真研究要不要改用,而且常常取决于我信赖的人地竭力说服。
但是,这并不是说我不喜欢有时候尝试,看看我缺少什么。所以最近,在不假思索地使用多年的bashShell后,我决定试一试另外四种Shell:ksh、tcsh、zsh和fish。这四种Shell都很容易从我Fedora中的默认软件库来安装,它们可能已经针对你选择的发行版进行了包装。
下面介绍了每一种Shell,以及为什么应选择它作为你的下一个Linux命令行解释器。
1.bash
首先,我们不妨看一下熟悉的Shell。GNU Bash(Bourne Again Shell)是这些年来我用过的几乎每个Linux发行版的默认Shell。bash首次发布是在1989年,后来轻松成为了Linux界使用最广泛的Shell,还经常出现在其他类似Unix的操作系统中。
bash是一种备受推崇的Shell;如果你在网上寻找关于如何执行各种操作的说明文档,几乎免不了会找到假设你在使用bashShell的操作说明。但是bash也有一些缺点,只要写过不止几行脚本的人都可以证明这一点。倒不是说你无法执行某个操作,而是阅读和编写起来并不总是来得特别直观(或者至少优雅)。想了解几个例子,只要看看这份常见bash陷阱列表。
话虽如此,bash可能早已得到了人们的接受,至少在不远的将来是这样,它有庞大的用户群,还有众多普通和专业的系统管理员已经习惯于其用法和小毛病。bash项目使用了GPLv3许可证。
2.ksh
KornShell(简称ksh)是一种替代的Shell,上世纪80年代从贝尔实验室发展而来,由David Korn编写。虽然起初是专有软件,但后来的版本采用Eclipse公共许可证发布。
ksh的支持者列出了他们认为它很出色的许多方面,包括拥有更好的循环语法、来自管道的更整洁的退出代码,更容易重复命令的方法以及关联阵列。它还能够模拟vi和emacs的许多行为,所以如果你非常偏爱文本编辑器,它可能值得一试。总的来说,我觉得它在基本输入方面非常类似bash,不过针对高级脚本,它肯定是不一样的体验。
3.tcsh
tcsh是csh即Berkely Unix CShell的衍生版,它具有非常悠久的历史,可以追溯到Unix和计算机本身的早期阶段。
tcsh的一大卖点是其脚本语言,这种语言对用C编程的人来说看起来非常熟悉。有些人喜欢tcsh的脚本,而有些人讨厌tcsh的脚本。不过它还有其他功能,包括给别名添加变量以及可能符合你偏好的各种默认设置,包括带标签的自动完成和历史标签完成的工作方式。
你可以找到采用BSD许可证的tcsh。
4.zsh
zsh是另一种与bash和ksh都有相似之处的Shell。zsh起源于上世纪90年代初,它有许多实用功能,包括拼写纠正、主题、可命名目录快捷方式、跨多个终端共享命令历史,以及对早期的BourneShell所作的其他众多细微改进。
zsh的代码和二进制文件可使用类似MIT许可证的许可证来发行,不过有些部分使用GPL许可证。查看实际许可证,了解详情。
5.fish
我知道,如果我访问官方网站,看到它用半开玩笑的话来描述:“终于有了一种为90年代而生的命令行Shell”――fish是在2005年编写的,我会喜欢互动性良好的Shellfish。
fish的开发人员给出了改用fish的诸多理由,处处用调侃的语气来笑话并不是完全实至名归的Shell。功能包括:自动建议、支持VGA“惊人”的256色调色板,不过也有一些确实很有帮助的功能,包括根据你机器上的参考手册页完成命令、干净的脚本和基于Web的配置。
fish主要采用GPL版本2许可证,但是有些部分采用了其他许可证;查看软件库,即可了解完整信息。
Zsh安装配置指南
使用 Zsh 的九个理由
Zsh使用心得三则
Linux下安装终极Shell Zsh