了解 Linux 中不同的 Shell:Zsh Shell
继 Bash 和 Korn 之后,今天我们将发现非常流行的 Zsh shell。事实上,Zsh 非常受欢迎,以至于很多人都为了他而离开了 Bash。其受欢迎的主要原因是与用户令人难以置信的交互性,以及非常全面和强大的自动完成功能。
历史
Zsh 的第一个版本是由普林斯顿大学的学生 Paul Falstad 于 1990 年创建的。 “Zsh”这个名字据称来自普林斯顿大学教授钟绍的连接ID。 shell 本身受到 Bash、Ksh 和 Tcsh 的影响:Zsh 具有非常强大的自动完成功能,以及递归搜索和校正器。当然,提示可以根据用户的意愿来定义。尽管如此,有些人仍将 Zsh 视为扩展的 Bourne Shell。
安装
现在您已经了解了有关 Zsh 的更多信息,让我们来安装它。对于 Ubuntu,安装相当简单:
sudo apt-get install zsh对于其他发行版,它也应该在您的存储库中可用。最坏的情况下,从官方页面下载软件包。
安装软件包后,您可以通过以下命令从任何终端启动 Zsh Shell:
zsh
如果您真的喜欢这个 shell 并希望它取代您当前的 shell,您可以通过输入
sudo usermod -s /bin/zsh [user name]请注意,像往常一样,配置文件位于“~/.zshrc”,并将在首次启动时创建。与 bash 一样,这可以用于添加别名和个性化提示。
用法
Zsh 非常直观。首先,您应该不会注意到 Bash 的行为有任何差异。然而,发现第一个功能的一个好方法是输入:
rm - [tabulation key]然后使用制表键。这将显示“rm”命令的所有可能的参数。正如您所看到的,Zsh 的自动完成功能令人难以置信。
不仅是命令的参数,还有 /etc/hosts 中显示的 ssh 主机、“make”命令的可能目标、手册页、远程服务器上的文件等,所有这些都可以由 Zsh 自动完成。而且自动完成的速度也令人印象深刻。
您还可以尝试输入错误的命令,例如
gdit .zshrc它将触发校正功能:
如果修正一开始不起作用,则说明您还没有激活它。为此,只需键入:
setopt correct
更正并不是您可以激活的唯一选项。在“setopt”命令之后,您还可以使用
- beep:发生错误时发出蜂鸣声
- hist_ignore_all_dups:防止同一个命令在历史记录中被记录两次
- auto_cd:只需输入目录名称即可移动到目录(不再需要 cd 命令)
相反,如果要删除一个选项,语法是:
unsetopt [option]Zsh 的另一个很好的用途是递归搜索。您在 Bash 中使用了运算符“*”,意思是“全部”。现在有了 Zsh,“**”可以翻译为“全部中的全部”。换句话说,就是递归搜索。让我用一个例子来说明。如果你想删除一个名为“foobar”的文件,但你不记得它在哪里,这一行会很方便:
rm **/foobarZsh 将在当前目录和每个子目录中搜索 foobar 文件,直到将其删除。
在搜索特定类型的文件时,递归运算符会变得非常有用。可以使用“ls”命令和正则表达式的组合。一个简单的命令,例如
ls **/*.mp3将返回 Zsh 可以从当前目录递归找到的所有 mp3 文件。
最后简单说一下Zsh的配置。如您所知,它发生在 ~/.zshrc 中。如果你想尝试一些个性化的提示,Zsh 附带了一些已保存的主题。要查看哪一个可用,请使用以下命令加载提示系统
autoload -U promptinit
promptinit然后列出主题:
prompt -l要更改当前的提示,请键入
prompt [theme's name]
如果您在 bash 中创建了大量别名,它们将无法在 zsh 中工作。您必须将它们移植到 ~/.zsh 文件。基本语法与 Bash 相同:
alias [alias' name]="[command]"此外,您还可以为文件扩展名定义特定的别名。这允许您自动启动所需文件的适当命令。例如,我使用程序“mpg123”从命令行播放 mp3。因此,我可以添加到我的 .zshrc:
alias -s mp3="mpg123"从那里开始,每次我写类似的东西
./song.mp3Mpg123 将启动并播放该歌曲。只要发挥一点想象力,我们就可以将此功能与我之前关于从命令行处理档案的文章结合起来:
alias -s tar="tar -xvf"
alias -s rar="unrar x"
alias -s zip="unzip"
alias -s pdf="evince"结论
是的,Zsh 和 Bash 非常相似,但 zsh 更灵活,这使得它更受欢迎。就我个人而言,我非常欣赏自动完成功能和文件扩展名的别名。上面提到的技巧只涵盖了 zsh 功能的一小部分。要了解有关 Zsh 的更多信息,我邀请您阅读 Archlinux wiki。
您对 Zsh Shell 有何看法?您尝试过另一种吗?您对 shell 有任何疑问吗?请在评论中告诉我们。



