终极 Shell——zsh

什么是 zsh

[Shell](/2022/10/19/Shell 概述/)是 Linux/Unix 的一个外壳,可以理解为衣服。它负责与 Linux 内核的交互,接收用户或者其他应用程序的的命令,然后把命令转换成内核能理解的语言,传递给内核,内核干完活之后再把结果返回给用户或者应用程序。

zsh 是 Linux/Unix 提供的多种 Shell 之一,其他发行版的 Linux 提供的默认 Shell 都是 bash,所以可以根据以下命令去查看,当前系统有几种 Shell:

1
2
3
4
5
6
7
8
9
10
11
12
13
cat /etc/shells

// 输出:
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
1
这里我因为已经提前安装了zsh,所以上述输出会出现zsh。

zsh 号称「终极 Shell」,Zsh 具有交互式制表符补全、自动文件搜索、支持正则表达式、用于定义命令范围的高级速记符,以及丰富的主题引擎等功能。这些功能也包含在你所熟悉的其它 Bourne 式 shell 环境中,这意味着,如果你已经了解并喜欢 Bash,那么你也会熟悉 Zsh,除此以外,它还有更多的功能。你可能会认为它是一种 Bash++。

但由于配置过于复杂,初期无人问津。到后面有了一个项目能让用户快速的配置和上手 zsh,再加上活跃的主题和插件社区,这才火了起来,这个项目叫做:「 oh my zsh 」。

下面对安装 zsh 和其主题插件做一个记录。

安装 zsh

我的工作笔记本电脑系统是 Ubuntu 20.04,所以下面演示的系统都会是 Ubuntu。

打开终端,在终端输入以下命令:

1
sudo apt-get install zsh -y

等待安装,等进度条结束的时候就已经把 zsh 安装成功了。

Zsh 不是终端模拟器。它是在终端仿真器中运行的 shell。因此,要启动 Zsh,必须首先启动一个终端窗口,例如 GNOME Terminal、Konsole、Terminal、iTerm2、rxvt 或你喜欢的其它终端。然后,你可以通过键入以下命令启动 Zsh:

1
$ zsh

首次启动 zsh 时,会要求你选择一些配置选项。这些配置都可以在以后更爱,因此请按 1 继续

1
2
3
4
5
6
7
1.  `This is the Z Shell configuration function for new users, zsh-newuser-install.`

3. `(q)  Quit and do nothing.`

5. `(0)  Exit, creating the file ~/.zshrc`

7. `(1)  Continue to the main menu.`

在进入主菜单时,会弹出以下 4 种分类:

偏好设置分为四类,因此请从顶部开始,配置界面中各个菜单代表的意思分别是:

  • 1:设置命令历史记录相关的选项
  • 2:设置命令补全系统
  • 3:设置热建
  • 4:选择各种常见的选项,只需要选择“On”或者“Off”
  • 0:退出,并使用空白(默认)配置
  • a:终止设置并退出
  • q:退出

这里根据提示,然后按照你自己的喜好配置就可以了。配置好后,会在你的用户目录下生成 .zshrc 文件。

安装 oh my zsh

安装的时候需要科学上网,如果不能科学上网的话,可通过访问国内 gitee 的镜像地址。

如果能科学上网的话,请使用下面方法:

curl

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

wget

1
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

如果不能科学上网,那就访问国内码云的地址:

1
sh -c "$(wget -O- https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

当进度条跑完之后 oh my zsh 就安装完成了。

设置 oh my zsh

安装主题

这里我选择使用 powerlevel10k 主题。

先安装 powerlevel10k:

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

如果不能访问 github,那就访问 gitee 的镜像仓库:

1
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

安装完主题之后,向 ~/.zshrc 配置文件中去启动该主题

1
2
3
4
vim .zshrc

## 进入编辑界面,设置ZSH_THEME选项
ZSH_THEME="powerlevel10k/powerlevel10k"

然后执行下列语句后,重新打开一个命令行终端

1
source .zshrc

再重新进入后会出发 powerlevel10k 主题的一些配置,这个根据提示去设置吧。

1
2
3
4
如果没有触发 powerlevel10k 配置的话,那就使用下列语句去主动触发配置:

**p10k configure**

安装插件

目前我只是安装了一下插件,后续发现了插件会更新:

插件 作用
git git 相关的功能
zsh-autosuggestions 记录之前输入过的命令,然后输入右箭头补全
zsh-syntax-highlighting 语法高亮,如果输入的命令是错误的会显示红色,正确会显示绿色
sudo 输入命令时需要权限,需要输入 sudo,该插件支持通过按 2 此 esc,就会在命令头部添加 sudo

安装插件的方法

安装插件的方法会有两个步骤:

  • 将插件下载至 zsh 的插件目录
  • 在 .zshrc 配置文件上添加插件名称到插件配置湘中
1
下载的方式通常是通过 git clone 的方式直接下载到zsh的环境变量目录中

git

该插件 zsh 会自己安装并且在配置文件上面添加。

在显示效果上会显示出分支、落后其跟踪分支多少个提交等信息,显示效果如下:

zsh-autosuggestions

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

我在输入 cd so 命令的时候,会将 software 这个候选命令显示出来,因为我最近访问过这个文件夹,插件会记录下这个目录。

这时键入右箭头也就是右方向键,会把该候选命令补全。

zsh-syntax-highlighting

该插件是一个命令高亮插件,当你在 Shell 中输入命令时,如果输入的不是一个命令,该插件会将命令以红色色彩显示,提示用户命令输入不正确;

反之,如果输入的是一个正确命令,那么它将绿色色彩显示该命令。显示效果如下:

命令输入错误时

命令输入正确时

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


终极 Shell——zsh
https://sunshinechen.cn/2023/03/28/终极Shell——zsh/
作者
sunshine
发布于
2023年3月28日
许可协议