FISH VS ZSH VS BASH以及为什么您应该改用FISH

2020-09-27 14:19:15

事实上,大多数开发人员喜欢Unix和类似Unix(基于Linux)的操作系统,如MacOS、Ubuntu等。它们稳定、功能强大、高度可定制,并且拥有强大的Unix Shell。

外壳是底层操作系统的接口。它允许您使用文本和命令执行操作,并为用户提供能够创建脚本等高级功能。

Unix Shell是一个功能强大的工具,它使程序员只需几句话就可以完成复杂的任务。有很多广泛可用的shell,如Bourne Shell、C Shell等。

我特别使用过Bash、Zsh和Fish Shell,下面是我的想法,为什么改用FISH甚至Zsh是让您的编程体验更愉快的最佳选择之一。

Bash是目前最常见的Linux shell。如果你在Mac上打开一个终端(在MacOS Mojave之前),或者如果你以前使用过Linux,你会看到Bash。

它可以创建别名、创建函数、导出变量和运行命令,就像任何其他shell一样。尽管可配置的选项有限,但它得到了广泛的使用,并且有大量用户习惯了它的用法和特性。

Zsh类似于Bash,是另一个很棒的shell。它比Bash速度更快,可定制化程度更高。

Zsh最酷的事情之一是颜色定制。您只需使用一个名为Oh my Zsh的框架就可以更改shell的主题和颜色。

Zsh还有许多其他有用的功能,包括拼写更正、跨多个终端共享命令历史记录、命名目录快捷方式等。

在我看来,FISH,或称“友好的交互式外壳”,是最友好和最具交互性的外壳。

它比Zsh和Bash更具可定制性。它有很多很酷的特性,比如一致的语法,漂亮的制表符完成和语法突出显示,很容易上手和使用,并且有出色的运行时帮助。

您只需使用一个名为Oh my Fish的框架就可以更改shell的主题和颜色。与前面提到的shell不同,FISH不符合POSIX,但它也不打算符合POSIX。

通过将以下shebang行添加到Bash文件的第一行,可以在Zsh和Fish中运行Bash脚本。

与其他需要大量设置才能按您希望的方式工作的外壳不同,Fish开箱即可完美工作。

它附带了已经包含的最广泛使用的功能,当你开始使用它时,这些功能就会出现,除非你愿意,否则不需要安装任何额外的插件或调整任何配置文件。它的语法简单、干净、一致。

语法突出显示是我们都希望CLI能够执行的功能。它节省了大量的时间和挫折感。嗯,鱼做到了,而且做得很好。

它甚至在您按Enter键之前就会显示您的命令或要搜索的目录是否存在。在您按Enter键之前,您就会知道您是否输入了错误的内容。这使得人们更容易解析命令并查找错误。

它以红色突出显示(大多数)错误,例如拼写错误的命令、拼写错误的选项、读取不存在的文件、不匹配的括号和引号,以及许多其他常见错误。

它还突出显示了匹配的引号和括号。哦,而且它很漂亮,五颜六色。

鱼类社区维护了Oh my Fish,这是一个受Oh my Zsh启发的shell框架。它提供了许多漂亮的提示主题和令人敬畏的插件,轻量级、令人敬畏且易于使用。

您将登录到网站,您可以在该网站上自定义您的外壳的皮肤。

这是这个Shell的一个交互功能。您开始键入一个命令,然后按Up键以查看Shell历史记录中您以前使用该命令的所有时间。

要搜索历史记录,只需键入搜索查询,然后按向上键即可。通过使用向上和向下箭头,您可以搜索较旧和较新的匹配项。FISH历史记录会自动删除重复的匹配项,并突出显示匹配的子字符串。

FISH会在您键入时提示命令,并在光标右侧以灰色显示建议。如果您输入了错误的命令,它将显示为红色,表示该命令无效。

它还会根据您的历史记录和可用的有效文件,在您键入时建议最常用的命令和自动完成。

Fish可以解析各种格式的CLI工具手册页。键入一条命令,并在所有建议的自动完成操作中使用“Tab”键。

在下面显示的视频中,我在鱼壳中执行了以下任务:

我已经运行了以下Bash Shell脚本:demo.sh,它打印前10个自然数。

3.然后我尝试访问无效的目录INVALID_Folder(请注意,文件夹名是红色的,表示该文件夹不存在)。

Fish不支持!,但您可以使用Oh my Fish Shell框架并安装bang-bang插件,以便在fish Shell中使用此快捷方式。

大多数FISH功能更看重便利性,而不是速度。这就是为什么Bash更适合编写Shell脚本的原因之一。

FISH充满了令人敬畏的功能,这些功能将把您的生产力提升到一个完全不同的水平。它有非常好的文档记录,而且安装起来也很容易。

即使不是万能的,它也具有遵循基本UNIX理念的功能:

如果您是一个广泛使用终端来完成任务的程序员,那么您需要离开当前的Shell,现在就开始使用FISH。