使用zsh创建更高效的shell环境
由于各个发行版的系统默认 shell 都是 bash,所以对 bash 的熟悉度是最高的。
例如 bash/python 脚本开头的 !#/bin/bash
,经常用到的命令 source ~/.bashrc
等等。
zsh 是一个为交互式使用而设计的 兼容 bash 的 shell,尽管它也是一个强大的脚本语言。Bash、 ksh 和 tcsh 的许多有用特性都被合并到 zsh 中; 还添加了许多原始特性。
相较 bash 具有以下优点:
- Tab 补全功能强大。命令、命令参数、文件路径均可以补全。
- 插件丰富。快速输入以前使用过的命令、快速跳转文件夹、显示系统负载这些都可以通过插件实现。
- 主题丰富。
- 可定制性高。
很重要的一点,zsh 完全兼容 bash,如果你的 bash 脚本开头是以 !#/bin/bash
的话,在 zsh 下还是完全兼容 bash 的。
安装 zsh
查看系统可以使用的 shell:
1 | cat /etc/shells |
安装 zsh
1 | sudo apt-get install zsh |
重新检查系统可以使用的 shell,发现多出了 zsh:
1 | cat /etc/shells |
1 | cat /etc/shells |
查看当前的默认 shell:
1 | echo $SHELL |
修改默认 shell:分别修改用户和 root 用户的终端。
1 | sudo chsh -s /bin/zsh |
重启系统,打开终端,初次启动 zsh 会进入配置界面,输入 0 可以跳过
安装 Oh My ZSH!
zsh 由于配置过于复杂门槛较高,大神开发了 oh my zsh 极大降低了使用门槛。
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" |
配置主题:powerlevel10k
(0) 安装字体
下载以下文件:
- MesloLGS NF Regular.ttf
- MesloLGS NF Bold.ttf
- MesloLGS NF Italic.ttf MesloLGS NF 斜体.ttf
- MesloLGS NF Bold Italic.ttf
打开【Terminal->Preferences】,选择配置文件,设置自定义字体为 MesloLGS NF Regular
。
(1) 安装主题
下载代码库:
1 | git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k |
(2) 设置主题
打开 ~/.zshrc
,找到 ZSH_THEME
所在的行,并将其值更改为 "powerlevel10k/powerlevel10k"
1 | vim ~/.zshrc |
1 | ZSH_THEME="powerlevel10k/powerlevel10k" |
最后,执行 source ~/.zshrc
配置生效,这时会提示对主题进行配置,按照提示进行即可。
安装插件
(0) oh-my-zsh 内置命令补全
默认 oh-my-zsh 命令自动补全功能如下:
- 自动列出目录:输入 cd 按 tab 键,目录将自动列出,在按 tab 可以切换
- 自动目录名简写补全:要访问
/usr/local/bin
这个长路径,只需要cd /u/l/b
按 tab 键自动补全 - 自动大小写更正:要访问 Desktop 文件夹,只需要
cd de
按 tab 键自动补全,或者查看README.md
,只需要cat rea
自动更正补全 - 自动命令补全:输入
kubectl
按 tab 键即可看到可用命令 - 自动补全命令参数:输入
kill
按 tab 键会自动显示出进程的 process id
(1) zsh-completions: 额外命令补全
额外的自动补全功能,补充 zsh 中尚不支持的命令补全
安装:
1 | git clone --depth=1 https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions |
添加以下内容到 ~/.zshrc
中 source "$ZSH/oh-my-zsh.sh"
之前。
1 | fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src |
开启新的 Shell 或执行 source ~/.zshrc
使配置生效。
(2) zsh-autosuggestions: 根据历史命令补全
作用是根据历史输入命令的记录即时的提示(建议补全),然后按右 →
键即可补全。
安装:
1 | git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-autosuggestions |
编辑 ~/.zshrc
,找到 plugins=(git) 这一行,修改为:
1 | plugins=( git zsh-autosuggestions ) |
开启新的 Shell 或执行 source ~/.zshrc
使配置生效。
(3) zsh-syntax-highlighting: 语法高亮
作用:命令错误会显示红色,直到你输入正确才会变绿色,另外路径正确会显示下划线。
安装:
1 | git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
编辑 ~/.zshrc
,以下部分添加插件的名字
1 | plugins=( git zsh-autosuggestions zsh-syntax-highlighting) |
开启新的 Shell 或执行 source ~/.zshrc
使配置生效。
(4) z: 文件夹跳转
z 是一个文件夹快捷跳转插件,对于曾经跳转过的目录,只需要输入最终目标文件夹名称,就可以快速跳转,避免再输入长串路径,提高切换文件夹的效率。
由于 oh-my-zsh 内置了 z 插件,所以只需要在 .zshrc
中,把 z 加入插件列表
1 | plugins=( git zsh-autosuggestions zsh-syntax-highlighting z) |
使用示例:
1 | 任意位置下使用命令 |
参考: