如何在 Ubuntu 22.04 上安装 Oh My Zsh(Oh My Zsh 分步安装指南)

Z Shell(Zsh)是一款交互式 Unix shell,作为命令解释器和 shell 脚本工具广受好评。它是增强版的 Bourne shell,融合了受 Bash、ksh 和 tcsh 功能启发的多项改进。Zsh 具备多项优势,包括命令行补全、共享历史记录、增强的通配符匹配、智能 Tab 补全、拼写纠正,以及丰富的插件和主题。

本教程将引导您完成 Oh My Zsh 的安装过程。我们还将介绍如何在 Ubuntu 22.04 系统上安装 Zsh,让您充分利用其强大功能,获得更好的命令行体验。

Zsh 与 Bash 有什么区别?

Zsh 和 Bash 都是被广泛采用的开源命令行解释器。Zsh 在设计上向后兼容 Bash,语法几乎相同。这保证了两者之间的平滑过渡,因为您在 Bash 中学到的大多数命令和交互方式同样适用于 Zsh。

比较 Zsh 与 Bash,最显著的区别在于 Zsh 提供了丰富的交互式自定义功能。用户可以通过配置主题、利用庞大的 Zsh 插件生态来打造个性化的 shell 体验。这些插件带来了大量交互方面的优化,全面提升使用体验。

虽然每项改进带来的单独收益看似不大,但这些效率优化叠加起来,能迅速将您的命令行效率提升到新的水平。

前提条件

要安装 Zsh 和 Oh My Zsh 插件,您需要满足以下前提条件:

您的系统或 Virtualbox 中运行着 Ubuntu 22.04 或更新版本。

您拥有 root 权限,或者作为非 root 用户拥有 sudo 权限。

在 Ubuntu 22.04 上安装 Zsh(Ubuntu 安装 Zsh)

在开始配置 Oh My Zsh 之前,您需要先在 Ubuntu 22.04 上安装 Zsh。请按照下面提供的步骤在 Ubuntu 上安装 Zsh。完成 Zsh 安装后,我们将引导您在 Ubuntu 22.04 上安装 Oh My Zsh,并介绍如何开始使用这个增强的 shell 环境。

下面开始在 Ubuntu 22.04 上安装 Oh My Zsh。

在 Ubuntu 22.04 上安装 Zsh

要在 Ubuntu 上安装 Zsh,请按照以下步骤操作:

第 1 步:更新 Ubuntu Apt 软件源

在 Ubuntu 上安装 Zsh 之前,务必先更新软件源。打开终端并执行以下命令:

$ sudo apt update

更新完成后,安装在 Ubuntu 22.04 上部署 Zsh 所需的依赖项或软件包:

$ sudo apt install build-essential curl file git

第 2 步:从 Ubuntu 官方软件源安装 Zsh

要在 Ubuntu 上安装 Zsh,请使用 Ubuntu apt 软件源,执行以下命令:

$ sudo apt install -y zsh

在上述命令中,“-y”选项会自动接受所有安装提示,而无需向用户询问。

第 3 步:验证 Zsh 安装

Zsh 安装成功后,您可以使用以下命令显示已安装的版本,以验证安装结果:

$ zsh --version

上述命令将显示服务器上安装的 Zsh 版本。

您还可以通过检查 Zsh 二进制文件的路径来验证 Zsh 在 Ubuntu 上的安装:

$ which zsh

上述命令应显示路径“/usr/bin/zsh”。

您也可以使用“whereis”命令验证安装路径:

$ whereis zsh

“whereis”命令会显示终端程序或脚本的位置。在本例中,它会给出 Zsh 的具体路径。

第 4 步:将 Zsh 设为默认 shell

Zsh 安装完成后,您可以使用 chsh 命令将其设为默认 shell。通过“-s”选项指定 Zsh 二进制文件的路径:

$ sudo chsh -s /usr/bin/zsh

该命令会修改用户文件“/etc/passwd”,使您的用户名在终端会话中默认加载 Zsh。重新启动终端后,通过 $SHELL 环境变量显示当前 shell,以确认更改已生效:

echo $SHELL

恭喜,您已成功在 Ubuntu 上安装 Zsh,并将其设为默认终端 shell。

在 Ubuntu 22.04 上安装 Oh My Zsh(Oh My Zsh Ubuntu 安装)

Oh My Zsh 是一个开源框架,旨在增强 Z Shell 的功能和特性,提升命令行环境中的效率与乐趣。该框架提供了轻松的安装过程,并能高效管理大量主题、插件和脚本。

第 1 步:安装 Curl 或 Wget

在您的系统上安装 Oh My Zsh 只需几秒钟。首先,安装 curl 或 wget,以便克隆 git 仓库或从互联网下载:

$ sudo apt install curl

第 2 步:在 Ubuntu 上安装 Oh My Zsh

虽然您已经将默认 shell 切换为 Zsh,但此时的体验可能与 Bash 并无明显差别。与其从零开始独自搭建 Zsh 配置,更有效的方法是利用 Oh My Zsh 生态系统。

这样您就可以探索和尝试社区已经开发好的大量工具和配置,获得更加流畅、丰富的命令行体验。

您可以使用以下命令在 Ubuntu 22.04 上安装 Oh My Zsh:

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

执行上述命令会将 Zsh 设为每个用户的默认 shell,无需重启服务器或注销。只需输入“Y”并按“Enter”即可开始,整个过程几秒钟内即可完成。终端窗口中应显示以下输出。

配置 Oh My Zsh 插件

Zsh 插件由一组便捷的别名和函数组成,旨在提升使用命令行工具时的效率。Oh My Zsh 自带 300 多个预配置插件,开箱即用。

默认情况下,这些预置插件处于停用状态。您可以在“~/.oh-my-zsh/plugins”目录中找到本地已安装插件的列表。要在 Oh My Zsh 中启用插件,请编辑 .zshrc 配置文件中的 plugins 行,只需添加所需插件的名称,并用空格分隔:

plugins=(plugin_1 plugin_2 plugin_3 …)

要查看插件列表,请打开浏览器并访问 GitHub 地址:https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins

在这里,您可以查看所有可用插件的列表。

浏览可用插件并确定要使用的插件后,在 ~/.zshrc 文件的 plugins=() 列表中填入其名称即可启用。例如,要启用 Python pip 插件,请在 ~/.zshrc 文件中添加以下行:

plugins=(python pip)

修改插件列表后,使用“Ctrl-O”保存,使用“Ctrl-X”退出。然后执行以下命令使更改生效:

source ~/.zshrc

配置 Oh-My-Zsh 主题

自定义您喜欢的 Oh My Zsh 主题非常简单。Oh My Zsh 主题的默认目录位于 ~/.oh-my-zsh/themes/,您可以在该目录中浏览所有可用主题。

要查看可用主题列表,请打开浏览器并访问:

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

选择主题时,请避免使用彩虹色或难以辨认的配色。黑色背景搭配白色或浅色文字的主题,可能不适合视力不佳的用户,也不适合没有显示器的无头服务器。

在浏览器中预览您选择的主题。找到喜欢的主题后,使用任意代码编辑器打开 ~/.zshrc 文件,例如:

sudo nano ~/.zshrc

在上面的截图中,默认主题设置为“robbyrussell”。要更换主题,请将 ZSH_THEME= 后面的文本替换为您喜欢的主题。例如,如果您想使用“agnoster”主题,请将“robbyrussell”替换为“agnoster”:

ZSH_THEME="agnoster"

如果您希望定期在多个主题之间切换,请将 ZSH_THEME= 参数设置为 random:

ZSH_THEME="random"

要指定一组用于随机选择的预定义主题,请定义 ZSH_THEME_RANDOM_CANDIDATES 参数。例如:

ZSH_THEME_RANDOM_CANDIDATES=("agnoster" "grml" "robbyrussell")

更换主题后,使用“Ctrl-O”保存并使用“Ctrl-X”退出。然后刷新 Oh My Zsh 配置:

source ~/.zshrc

配置自动建议插件

启用自动建议插件后,您可以根据 Zsh 命令历史获得命令建议,从而节省时间,更轻松地完成日常任务,对常用命令尤其有用。请按照以下步骤启用自动建议:

首先添加自动建议插件的仓库。使用以下命令克隆仓库:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

使用文本编辑器打开 .zshrc 配置文件:

nano ~/.zshrc

在文件的 plugins 部分,将自动建议插件添加到插件列表中以启用它,如下所示:

plugins=(git zsh-autosuggestions)

保存修改并退出文本编辑器。

重新启动终端并启动 Zsh,以激活自动建议插件。

现在,输入命令时,按右方向键即可接受建议,轻松补全命令。

启用语法高亮

语法高亮有诸多优点,例如提高代码可读性、帮助发现错误、识别语言、提升效率以及改善视觉效果。请按照以下步骤在 Zsh 中集成语法高亮:

使用以下命令克隆插件仓库:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

打开 .zshrc 文件:

nano ~/.zshrc

找到 plugins 部分,将 zsh-syntax-highlighting 添加到插件列表中。

保存修改并退出文件。

重新启动终端并启动 Zsh,以激活语法高亮。例如,输入有拼写错误的命令时会以红色高亮显示,而正确输入的命令则显示为绿色:

在上面的示例中,我们使用“echo”命令演示了高亮功能的效果。

配置 JSON Tools 插件

由于 JSON 已被广泛用作 Web 开发中的默认数据标准,您可能经常需要直接在终端中处理 JSON,尤其是在测试新的 API 调用时。JSON Tools 插件可以改善这一体验,让您更方便地处理 JSON。要试用它,请将该插件添加到 Zsh 配置文件中:

plugins=(... jsontools)

启用此插件后,您可以轻松地将 JSON 数据通过管道传给相应的 JSON 工具。例如,标准的 JSON 输出往往难以阅读。我们从 Chuck Norris Jokes API 获取一条随机笑话的信息:

curl https://api.chucknorris.io/jokes/random

现在,将这段 JSON 输出传给美化打印的 JSON 工具:

curl https://api.chucknorris.io/jokes/random | pp_json

如您所见,输出现在已被格式化,便于人工阅读。JSON Tools 插件能显著提升终端中 JSON 数据的清晰度。

配置 Oh My Zsh 自动更新

默认情况下,OH-MY-ZSH 每两周自动更新一次。要停用此功能,请在 ~/.zshrc 文件中取消 DISABLE_AUTO_UPDATE 行的注释,并将 DISABLE_AUTO_UPDATE 参数设置为“true”。

sudo nano ~/.zshrc

DISABLE_AUTO_UPDATE="true"

如果您希望自定义更新频率,可以设置检查更新的天数。例如,要每天检查一次自动更新,请将 UPDATE_ZSH_DAYS 参数设置为 1。

UPDATE_ZSH_DAYS=1

使用“Ctrl-O”保存更改,然后按“Enter”,再使用“Ctrl-X”退出。接着输入以下命令刷新 Oh My ZSH 配置:

source ~/.zshrc

您也可以使用以下命令手动执行更新:

omz update

最后,重启系统以应用更改:

sudo reboot now

至此,Oh My Zsh 在 Ubuntu 22.04 上的安装和配置就完成了。按照上述指南操作,您已成功根据自己的偏好调整了自动更新设置。

配置 Dirhistory 插件

该插件基于目录访问历史的概念,改善您的目录导航体验。它提供了便捷的快捷键,让您更轻松地在目录历史中切换。要启用此功能,请将“dirhistory”添加到配置文件中:

plugins=(... dirhistory)

添加后,保存文件并刷新 Zsh 配置:

source ~/.zshrc

现在,您可以利用以下快捷键在目录历史中自如切换:ALT + LEFT 返回上一个目录,ALT + RIGHT 前往下一个目录,ALT + UP 进入父目录,ALT + DOWN 进入第一个子目录。这个插件能让您浏览目录的效率更上一层楼。

Zsh 中的 Tab 自动补全

Zsh 的另一项出色功能是其先进的 Tab 补全系统。该功能会根据命令行上下文智能推荐可用的内容,包括脚本、环境变量、命令及其选项。

要体验这一功能,请输入 system 并按 TAB,即可获得自动建议列表。再次按 TAB,您可以使用 TAB 或方向键在可用程序之间切换:

同样,输入 systemctl、加一个空格并按 TAB,会列出可用的 systemctl 命令及其说明。使用 TAB 或方向键在列表中切换:

输入 systemctl - 并多次按 TAB,您可以在带说明的 systemctl 可用选项列表中切换:

command options autocomplete

再来点小魔法:输入 systemctl stop、加一个空格并按 TAB,即可看到所有可以用“systemctl stop”命令停止的正在运行的 Linux 进程列表:

target processes autocomplete

使用先进的 Tab 自动补全非常简单,并能显著提升效率。将它纳入您的命令行工具箱,获得更高效、更强大的体验。

反向历史搜索

传统上,调用反向历史搜索需要使用“CTRL + R”,它可以在命令历史中搜索任意词语。按“CTRL + R”并输入一个子字符串,例如“system”,即可找到最近一条包含该子字符串的命令:

继续按“CTRL + R”可在历史记录中向后查找,或使用“CTRL + S”向前查找。

Zsh 对此功能做了一个小而实用的改进。如果您记得要查找的命令的开头部分,只需输入它,然后使用 UP 和 DOWN 键在按该子字符串过滤后的历史记录中浏览。例如,输入“apt”并按 UP,即可找到最近一条以该子字符串开头的命令。

配置 History 插件

在 Oh My Zsh 中,许多插件本质上是由经验丰富的系统管理员整理的一组实用别名。History 插件为 history 命令提供了一组便捷的别名。通过修改 Zsh 配置文件即可启用:

plugins=(... history)

启用后,您可以使用以下别名:

h(history):打印命令历史。

hs(history | grep):使用 grep 搜索命令历史。

his(history | grep -i):使用 grep 对命令历史进行不区分大小写的搜索。

启用历史时间戳

另一个实用功能是为每条历史命令添加时间戳。要启用此功能,请在配置文件中取消以下行的注释,并选择您喜欢的日期格式:

HIST_STAMPS="yyyy-mm-dd"

启用此设置后,history 命令显示的每条命令都会附带时间戳,为您的命令历史提供按时间排列的记录。

启用 Colored Man Pages 插件

您是否经常需要查阅各种命令行工具的帮助页面?Colored Man Pages 插件会高亮显示不同的命令及其参数,让它们在文档中一目了然,从而加快您的阅读速度。通过修改 Zsh 配置文件即可启用此插件:

plugins=(... colored-man-pages)

如果您需要从 Ubuntu 22.04 中卸载 Oh My Zsh 及其插件和主题,可以使用其内置的卸载脚本。在终端中执行以下命令:

$ uninstall_oh_my_zsh
自定义您喜欢的 Oh My Zsh 主题非常简单。Oh My Zsh 主题的默认目录位于 ~/.oh-my-zsh/themes/,您可以在该目录中浏览所有可用主题。
$ sudo apt --purge remove zsh

该命令会删除与 Oh My Zsh 相关的所有文件和文件夹,使服务器恢复到安装前的状态。

从 Zsh 切换回 Bash shell

使用以下命令将默认 shell 切换回 Bash(或您偏好的其他 shell):

$ chsh -s $(which bash)
运行此命令后,请关闭当前终端并打开新的会话,以确保更改生效。

如果您在 VPS 上使用 Linux 主机,可以在服务器上安装并使用 Zsh Ubuntu Shell。

结论

本指南演示了在 Ubuntu 22.04 上安装和配置 Oh My Zsh 的过程。尽管 Bash 仍被广泛使用,并且是众多 Linux 发行版的默认 shell,但 Zsh 凭借诸多优势日益受到欢迎。

您可以灵活地进一步自定义 Zsh 环境,加入个人化的调整。在 Ubuntu 上安装的 Zsh 不仅仅是一个 shell,它同时也是一种强大的脚本语言。

如果您希望更深入地进行自定义,可以查阅官方 Zsh 文档中的丰富资源。