4 个你实际上会想使用的被忽视的 Linux shell
如果你认为 shell 仅限于 Bash 和 Zsh,那就再想想。忠于 Linux 哲学,shell 只是另一个可以随意替换的程序;在某些情况下,还能产生显著的效果。
这一系列替代方案涵盖了一系列选项,从功能丰富的产品到扩展特定编程语言使用的外壳。
Fish,友好的交互式 shell
迄今为止,这些替代方案中最著名的要数 Fish,但这个 shell 很少是默认的,所以即使你听说过它,你可能也没有尝试过。不过,更换你的 shell 非常简单,你可以在永久更改之前先尝试 Fish。
首先通过 brew install fish、pacman -S fish、dnf install fish 安装它,或者下载适合你发行版的相应软件包。
如果你真的想要一个默认使用 Fish 的发行版,可以看看 CachyOS。
安装完成后,只需在终端中运行fish,你就会看到一个全新、多彩的命令行,拥有许多额外功能。
Fish 最著名的功能是其语法高亮和自动补全。前者可以在你输入时帮助你纠正错误,能够检测不存在的命令和不匹配的括号。后者则提供建议,例如特定命令的选项和 Makefile 目标。
这个 shell 将脚本放在最前沿,它对提示符的处理方式也体现了这一点。与大多数 shell 使用特殊格式字符定义字符串不同,fish 使用一个函数来动态生成你的提示符。通过修改这个函数,你可以生成比其他选择更动态和有上下文的提示符。
Wish,面向GUI程序员的Shell
这个不寻常的壳程序将“利基”一词发挥到了极致,但如果你是一个勇敢的探险者,你可能会想去看看。Wish 是 Tcl/Tk 的一个伴侣,Tcl/Tk 是跨平台的 GUI 工具包,所以它实际上是一种将你的终端环境和这个框架结合起来的方式。
还有一件事让 Wish 在这个列表中独特:你可能已经安装了它。Tcl/Tk 打包了这个 shell,大多数 Linux 发行版以及 macOS 都包含它。
在交互模式下,Wish 的提示符允许你运行 Tcl/Tk 命令或脚本,例如下面的示例,它在一个红色窗口中创建了一个黄色矩形:
canvas .myCanvas -background red -width 200 -height 200
pack .myCanvas
.myCanvas create rectangle 50 50 100 80 -fill yellow明确地说:这个 shell 只有在你是 Tcl/Tk 程序员,或者你有兴趣成为 Tcl/Tk 程序员时才真正有意义。但编写与 shell 紧密集成的简单 GUI 应用程序的能力不应被忽视,而 Wish 有助于显著降低跨平台编程的门槛。
精灵语,未来的外壳
Elvish 是一个非常新颖、令人兴奋的 shell,将现代编程技术集成到其脚本语言中。凭借高度可用的交互界面,它非常适合编程专家以及那些希望使用更友好 shell 的人。
您需要下载并运行一个脚本来使用这个 shell;针对各种操作系统和架构都有可用的选项。
你首先会注意到关于 Elvish 的一件事是它习惯在当前提示符的末尾显示你的用户名和主机。但你可能会注意到的下一个不同之处是方便的自动补全功能:
按下 Tab 会显示一个可能的命令或文件名网格供选择。Elvish 的历史导航也简单直观,会根据你已经输入的字符过滤单独的项目。还有一个位置历史,它可以让你快速访问之前的工作目录:
但精灵语(Elvish)远不止于此,因此投入时间的高级用户将会有所回报。这个 shell 的强大功能或许最好通过它对结构化数据的使用来展示。大多数 shell 使用文本作为数据通信的唯一类型:一切都是字符串。但精灵语提供了字符串、数字、布尔值、列表,甚至映射和函数作为一等类型。
该 shell 通过在面向字节的标准输出流之外引入一个值通道来支持这些类型。使用 put 命令,作为 echo 的替代,可以将结构化的值写入该通道。实际上,这意味着脚本可以更可靠地传递数据,并且解析字符串所需的代码更少。
Xonsh,Python 爱好者的选择
另一种特定语言的 shell,Xonsh 将 shell 环境与 Python 配对,提供高级用户体验。Xonsh 自称为“Python 中的 Shell”和“Shell 中的 Python”,强调这种组合的整体优于各部分之和。这在有效结合两者的命令中显而易见:
len($ (curl -Ls https://xon.sh))这里,Python 的 len 函数使用熟悉的语法调用,以替换命令的结果;在本例中是 curl。像 Wish 一样,Xonsh 允许你将经典的 shell 命令与特定语言的语句一起运行,因此你可以随意在两者之间切换:
Xonsh 的教程非常出色,涵盖了所有基础知识,并提供了几个可以跟着操作的示例项目。这些内容涵盖了从历史记录和标签补全到事件和扩展的所有方面。
Python 是初学者的完美语言,因此 Xonsh 可能是学习 shell 编程的最佳方法之一。




