Fish vs. Zsh vs. Bash以及为什么要改用Fish

8,098 阅读5分钟

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

什么是UNIX Shell?

Shell是基础操作系统的接口。它允许你使用文本和命令来执行操作,并且为用户提供了高级功能,例如能够创建脚本。

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

我特别使用了BashZshfish shell,下面是我对为什么切换到fish甚至Zsh是使你的编程体验更愉快的最好方法之一的想法。

一分钟介绍Bash,Zsh和fish

Bash

Bash是最常见的Linux Shell,如果你在Mac上打开终端(直到macOS Mojave为止),或者如果你以前使用过Linux,那么你会看到Bash。

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

Zsh

Zsh与Bash类似,是另一个很棒的shell,它比Bash更快,更可自定义。

关于Zsh的最酷的事情之一是颜色自定义,你只需使用名为Oh My Zsh的框架即可更改shell的主题和颜色。

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

Fish

在我看来,Fish,或者“友好的交互式Shell”,是最用户友好和交互式的Shell。

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

你只需使用名为Oh My Fish的框架即可更改shell的主题和颜色,与前面提到的shell不同,fish不是POSIX兼容的,但也并非如此。

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

#!/usr/bin/env bash

Fish有什么特别之处?

Fish Shell logo

易于理解和使用

与需要大量设置才能按你希望的方式工作的其他shell不同,fish开箱即用即可完美工作。它附带了已经包含的最广泛使用的特性,当你开始使用它时,不需要安装任何额外的插件或调整任何配置文件,除非你愿意。它的语法简单,干净且一致。

语法高亮

语法高亮显示是我们都希望我们的CLI能够执行的功能。它可以节省大量的时间,也可以节省大量的时间和挫折感。好吧,fish就做到了,而且做得很好。

在你按回车键之前,它就会显示你的命令或要搜索的目录是否存在。在你按回车键之前,你就会知道你是否输入错了什么。这样一来,人们就更容易解析命令,发现错误。

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

它还具有突出显示匹配的引号和括号的功能。哦,它很漂亮,色彩丰富。

fish shell的配置

Fish社区维护了Oh My Fish,这是一个受Oh My Zsh启发的shell框架。它提供了许多精美的提示主题和超赞的插件,轻巧,超赞且易于使用。

它还提供了基于Web的配置功能。只需输入:

fish_config

你将进入可自定义shell皮肤的网站。

web_config page for fish

内嵌搜索历史

这是该Shell的一个交互式功能。你开始输入一个命令,然后按向上键,可以看到Shell历史记录中所有你之前使用该命令的时间。

要搜索历史记录,只需输入搜索查询,然后按向上键即可。通过使用向上和向下箭头,你可以搜索较早和较新的匹配。fish的历史记录会自动删除重复匹配,匹配的子串会被高亮显示。

这些功能使搜索和重用以前的命令变得更快。

内嵌自动建议

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

它还会根据你的历史记录和有效文件,在你输入的同时,提示你最常用的命令和自动完成。

内联自动建议的演示

使用人机界面数据完成制表页

Fish可以解析各种格式的CLI工具手册页,输入一个命令,然后按 "tab" 通过所有建议的自动完成。

使用fish的缺点

没有什么是完美的,也不应该是完美的。

不支持历史扩展(“!!”)

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

慢于Bash

Fish的大多数功能都将便利放在优先位置,而不是速度吗,这是Bash更好地编写Shell脚本的原因之一。

总结

Fish充满了令人敬畏的功能,它将使你的工作效率提升到一个不同的水平。它有非常完善的文档,而且安装起来也很容易。

如果不是一切都做得最好,它具有遵循基本UNIX哲学的功能:“只做一件事,并做好。”

如果你是一个广泛使用终端来完成事情的程序员,那么你需要从目前的Shell中走出来,现在就开始用fish。


来源:medium.com/better-prog…,作者:Siddharth Mohanty,翻译:公众号《前端全栈开发者》