🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Zsh 是什么?解说开发者钟爱的理由及其与 Bash 的区别

在之前的系列文章中,我们学习了 Shell 中的王者“Bash”以及 Windows 的王牌“PowerShell”。相信您已经感受到命令行世界是多么强大,以及它所蕴含的能极大地提高工作效率的可能性。好了,这次作为本系列的收官之作,我们将为大家介绍一款被众多开发者誉为“一旦用上就回不去”的最强 Shell——“Zsh”

特别是在 macOS 上,几年前 Zsh 就已被采纳为标准 Shell,对于 Web 开发者来说,它已成为一个无法回避的存在。“它和 Bash 有什么区别?”“为什么这么受欢迎?”我们将结合能让您亲身体验其具体功能和操作感的示例,通俗易懂地解答这些疑问。

如果说 Bash 是一辆性能可靠的家用轿车,那么 Zsh 就是一辆满载便捷功能、可自由定制的高级跑车。读完本文,您一定能发现 Zsh 的魅力所在,并从此爱上打开终端的感觉!


Zsh (Z Shell) 是什么?

Zsh 和 Bash 一样,是 Unix Shell 的一种。它在吸收了 Bash 优点的基础上,以增加和扩展更强大功能为目的而开发。因此,许多基本命令操作(如 ls, cd, rm 等)和管道(|)的用法与 Bash 几乎完全相同。您可以放心,您在 Bash 中学到的知识可以原封不动地用在 Zsh 上,把它看作是Bash 的上位兼容版也基本没问题。

那么,Zsh 受到开发者们压倒性支持的理由是什么呢?其秘密主要在于以下三个特点:

百闻不如一见,亲身体验其区别是最好的方式。在下一节中,让我们来看看 Zsh 惊人的功能吧。


体验 Zsh 的魅力!看懂它与 Bash 区别的便捷功能

在这里,我们将介绍 Zsh 众多便捷功能中,尤其容易上手的几个。请务必在您的终端(macOS 或已安装 Zsh 的 Linux 环境)上尝试一下。

1. 过于智能的“补全功能”

输入命令或文件名的开头部分后按 Tab 键来补全剩余部分,这个功能 Bash 也有。但是,Zsh 的补全功能要远比这强大得多。

例如,当您忘记 git 命令的某个选项时,可以尝试输入 git checkout - 然后按下 Tab 键。

$ git checkout -[按Tab键]

这时,所有可用的选项会连同说明一起列出,您可以用方向键进行选择。再也不需要去查手册了。


目录切换也变得更加智能。例如,当您想切换到一个路径很深的目录时,只需输入每级目录的首字母即可补全。

$ cd /u/l/b[按Tab键]
# 会自动补全为
$ cd /usr/local/bin/

2. 无需`cd`命令的目录切换

在 Zsh 中,如果启用了某项设置(setopt AUTO_CD),您只需输入目录名就可以像执行了 cd 命令一样进行切换。

$ ../../
# 移动到上两级目录

3. 功能强大的文件搜索(Globbing)

Globbing 是指使用通配符(如 *)进行文件名展开。在 Zsh 中,这项功能非常强大。

例如,如果您想在当前目录及其所有子目录中查找扩展名为 .html 的文件,可以这样写:

$ ls **/*.html

** 代表递归搜索。要在 Bash 中实现这个功能,需要进行一些额外的设置,稍微有些麻烦。


让 Zsh 变得最强的框架——“Oh My Zsh”

能将 Zsh 的潜力发挥到极致的,正是以 Oh My Zsh 为代表的“框架”。这是一个能让您轻松管理 Zsh 便捷设置、插件和主题的系统。

特别是安装了著名的 Oh My Zsh 之后,您可以立即享受到以下好处:

如果想自己完成这些设置会非常繁琐,但使用 Oh My Zsh,您可以在几分钟内就将全世界开发者创造的便捷设置据为己有。


与 Bash 的兼容性及编写脚本时的注意事项

正如我们目前所见,在交互式使用时,Zsh 几乎可以作为 Bash 的上位兼容版来使用。但是,在编写 Shell 脚本时,有一个需要注意的重要区别。

那就是数组索引的起始编号

在 Bash 中 (索引从 0 开始):

#!/bin/bash
my_array=("apple" "banana" "cherry")
echo ${my_array[0]} # -> apple

在 Zsh 中 (索引从 1 开始):

#!/bin/zsh
my_array=("apple" "banana" "cherry")
echo $my_array[1] # -> apple

这个区别在用 Zsh 运行为 Bash 编写的脚本时,可能会导致意想不到的错误。因此,正确书写脚本第一行的 Shebang(如 #!/bin/bash),明确脚本预期的执行环境,就显得尤为重要。


总结

这次,我们解说了成为 macOS 标准、并深受众多开发者喜爱的 Shell——“Zsh”的魅力。

Zsh 是一个非常强大的工具,它能将日常的命令行工作从“枯燥的任务”变为“舒适而富有创造性的体验”。作为一名 Web 创作者,在无法回避服务器操作和 Git 等工具的今天,熟练使用 Zsh 将成为一大优势。

为了那些想“一定要在自己的环境里也装上 Zsh!”的读者,下一篇文章我们将具体解说在 macOS 和 Linux 上安装 Zsh 和 Oh My Zsh,并进行初始设置的步骤。敬请期待!

Zsh的安装方法(macOS / Linux)与初期设定指南