终极 Shell——zsh
什么是 zsh
[Shell](/2022/10/19/Shell 概述/)是 Linux/Unix 的一个外壳,可以理解为衣服。它负责与 Linux 内核的交互,接收用户或者其他应用程序的的命令,然后把命令转换成内核能理解的语言,传递给内核,内核干完活之后再把结果返回给用户或者应用程序。
zsh 是 Linux/Unix 提供的多种 Shell 之一,其他发行版的 Linux 提供的默认 Shell 都是 bash,所以可以根据以下命令去查看,当前系统有几种 Shell:
1 | |
1 | |
zsh 号称「终极 Shell」,Zsh 具有交互式制表符补全、自动文件搜索、支持正则表达式、用于定义命令范围的高级速记符,以及丰富的主题引擎等功能。这些功能也包含在你所熟悉的其它 Bourne 式 shell 环境中,这意味着,如果你已经了解并喜欢 Bash,那么你也会熟悉 Zsh,除此以外,它还有更多的功能。你可能会认为它是一种 Bash++。
但由于配置过于复杂,初期无人问津。到后面有了一个项目能让用户快速的配置和上手 zsh,再加上活跃的主题和插件社区,这才火了起来,这个项目叫做:「 oh my zsh 」。
下面对安装 zsh 和其主题插件做一个记录。
安装 zsh
我的工作笔记本电脑系统是 Ubuntu 20.04,所以下面演示的系统都会是 Ubuntu。
打开终端,在终端输入以下命令:
1 | |
等待安装,等进度条结束的时候就已经把 zsh 安装成功了。
Zsh 不是终端模拟器。它是在终端仿真器中运行的 shell。因此,要启动 Zsh,必须首先启动一个终端窗口,例如 GNOME Terminal、Konsole、Terminal、iTerm2、rxvt 或你喜欢的其它终端。然后,你可以通过键入以下命令启动 Zsh:
1 | |
首次启动 zsh 时,会要求你选择一些配置选项。这些配置都可以在以后更爱,因此请按 1 继续
1 | |
在进入主菜单时,会弹出以下 4 种分类:

偏好设置分为四类,因此请从顶部开始,配置界面中各个菜单代表的意思分别是:
1:设置命令历史记录相关的选项2:设置命令补全系统3:设置热建4:选择各种常见的选项,只需要选择“On”或者“Off”0:退出,并使用空白(默认)配置a:终止设置并退出q:退出
这里根据提示,然后按照你自己的喜好配置就可以了。配置好后,会在你的用户目录下生成 .zshrc 文件。
安装 oh my zsh
安装的时候需要科学上网,如果不能科学上网的话,可通过访问国内 gitee 的镜像地址。
如果能科学上网的话,请使用下面方法:
curl
1 | |
wget
1 | |
如果不能科学上网,那就访问国内码云的地址:
1 | |
当进度条跑完之后 oh my zsh 就安装完成了。
设置 oh my zsh
安装主题
这里我选择使用 powerlevel10k 主题。
先安装 powerlevel10k:
1 | |
如果不能访问 github,那就访问 gitee 的镜像仓库:
1 | |
安装完主题之后,向 ~/.zshrc 配置文件中去启动该主题
1 | |
然后执行下列语句后,重新打开一个命令行终端
1 | |
再重新进入后会出发 powerlevel10k 主题的一些配置,这个根据提示去设置吧。
1 | |
安装插件
目前我只是安装了一下插件,后续发现了插件会更新:
| 插件 | 作用 |
|---|---|
| git | git 相关的功能 |
| zsh-autosuggestions | 记录之前输入过的命令,然后输入右箭头补全 |
| zsh-syntax-highlighting | 语法高亮,如果输入的命令是错误的会显示红色,正确会显示绿色 |
| sudo | 输入命令时需要权限,需要输入 sudo,该插件支持通过按 2 此 esc,就会在命令头部添加 sudo |
安装插件的方法
安装插件的方法会有两个步骤:
- 将插件下载至 zsh 的插件目录
- 在
.zshrc配置文件上添加插件名称到插件配置湘中
1 | |
git
该插件 zsh 会自己安装并且在配置文件上面添加。
在显示效果上会显示出分支、落后其跟踪分支多少个提交等信息,显示效果如下:

zsh-autosuggestions
该插件会记录之前输入过的命令,然后键入右箭头将候选的命令补全,显示效果如下:

我在输入 cd so 命令的时候,会将 software 这个候选命令显示出来,因为我最近访问过这个文件夹,插件会记录下这个目录。
这时键入右箭头也就是右方向键,会把该候选命令补全。
zsh-syntax-highlighting
该插件是一个命令高亮插件,当你在 Shell 中输入命令时,如果输入的不是一个命令,该插件会将命令以红色色彩显示,提示用户命令输入不正确;
反之,如果输入的是一个正确命令,那么它将绿色色彩显示该命令。显示效果如下:
命令输入错误时

命令输入正确时

从以上效果可以看出,该插件可以帮助我们来检查输入的命令是否正确。