深圳幻海软件技术有限公司 欢迎您!

macOS Catalina 新的命令行工具,这篇文章让你提前用上它

2023-02-26

在月初召开的 WWDC 2019 上,Apple 公布了下一代 macOS —— macOSCatalina 。除了全新的音乐和电视等 app、支持 iPad 作为外置显示器等显而易见的更新

在月初召开的 WWDC 2019 上,Apple 公布了下一代 macOS —— macOS Catalina 。除了全新的音乐和电视等 app、支持 iPad 作为外置显示器等显而易见的更新,macOS Catalina 还为专业用户带来了一项重大变化 —— Zsh 将取代 Bash,成为操作系统的默认 Shell。

尽管 Apple 没有对这一改变作出解释,但根据 The Verge 的 猜测 ,这可能与 GPLv3 协议有关。macOS 目前使用的 Bash 3.2 版本基于 GPLv2 协议,但新版 Bash 已经转移到了 GPLv3 协议。GPLv3 协议对 Apple 这样的大公司有着更严格的限制,这可能是 Apple 不再将 Bash 作为默认 Shell 的原因。

而相比 Bash 来说,Zsh 也拥有许多更强大的功能:更智能的自动补全、命令选项提示、更丰富的主题,等等。在今秋体验到 macOS Catalina 正式版之前,我们可以先将 macOS 的默认 Shell 切换到 zsh,熟悉一下新版 Shell 的功能。

本文的目标,就是要帮你打造一个好看、好用的 Zsh 终端。

一个漂亮又强大的终端

Zsh 与 Oh My Zsh

Zsh 本体有着强大的功能,但碍于其复杂的配置,对普通用户而言并不太适合。但是,一个开源项目的出现打破了这一局面 —— 它就是本文的主角: Oh My Zsh 。借助 Oh My Zsh,你只需要进行极为简单的安装配置,就可以用上 Zsh,并享受许多酷炫的功能,下面就让我们正式开始安装过程。

安装 Oh My Zsh

macOS Mojave 已经自带了 Zsh,所以我们直接安装 Oh My Zsh。安装过程极为简单,打开终端,执行一行命令即可:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 
  • 1.

在安装过程中会提示 Do you want to change your default shell to zsh? [Y/n] (是否将默认 Shell 切换到 Zsh),按下  Y 并回车即可。随后会提示  Password for xxx ,输入你的用户密码并回车即可。当你看见大大的  Oh my zsh 标志时就表示 Oh My Zsh 已经安装成功了。

显示「Oh my zsh」表示安装成功

基本设置

安装好 Oh My Zsh 后,使用以下命令打开 Zsh 的设置文件:

vim ~/.zshrc

在 vim 编辑器下,你可以使用方向键移动光标,按 i 进入编辑模式,编辑好后按  esc 退出编辑模式,随后输入  :wq 并回车即可保存。另外,Mac 下的 Vim 默认是没有显示行号 & 开启语法高亮的,你可以参考以下命令打开行号显示 & 语法高亮:

cp /usr/share/vim/vimrc ~/.vimrc    #复制 vim 配置模版 
echo 'syntax on' >> ~/.vimrc    #开启语法高亮 
echo 'set nu!' >> ~/.vimrc  #开启行号显示 
  • 1.
  • 2.
  • 3.

Zsh 的配置文件中提供了详细的注释,你可以根据注释修改相关设置,满足自己的要求。例如,你想关闭 Zsh 的自动更新,则定位到 DISABLE_AUTO_UPDATE 一行,根据前面的注释,删除行前的注释符号  # 即可。

关闭自动更新

保存退出之后,使用以下命令使 Zsh 的配置立即生效:

source ~/.zshrc 
  • 1.

设置主题

Oh My Zsh 自带了大量主题文件。你可以执行以下命令查看自带的主题:

ls ~/.oh-my-zsh/themes 
  • 1.

对于自带主题的样式和呈现效果,你可以前往 Oh My Zsh 的 官方 Wiki 查看。

在这里,我选择使用 agnoster 作为我的主题。我们需要通过编辑 zsh 配置文件来修改主题:

vim ~/.zshrc 
  • 1.

定位到 ZSH_THEME 一行,将双引号中的内容修改为自己选择的主题名即可。

修改主题名

保存退出后,执行以下命令使 zsh 的配置立即生效:

source ~/.zshrc 
  • 1.

安装 Powerline 字体

主题设置完成后,终端中却出现了乱码的字符:

乱码字符

这是由于我使用的 agnoster 主题中含有特殊字符,需要安装 Powerline 字体支持才能正常显示。打开终端,参考以下命令安装 Powerline 字体:

cd ~/Downloads && git clone https://github.com/powerline/fonts.git  #将 Powerline 字体文件下载到「下载」文件夹中 
cd fonts && ./install.sh    #安装所有 Powerline 字体 
cd && rm -rf ~/Downloads/fonts  #删除下载的字体文件 
  • 1.
  • 2.
  • 3.

随后,我们按 ⌘, 打开终端偏好设置,在「描述文件 > 文本」中更改字体。

更改字体选项

在弹出的窗口中选择一款 Powerline 字体(所有可选项请参考 Powerline 的 GitHub 页面 ),调整一下字体大小即可。在这里我选择了 DejaVu Sans Mono for Powerline 字体 (逮虾户!),大小设置为 14 磅。

我的字体设置

此时回到终端,发现表示文件目录的箭头已经可以正常显示了:

Powerline 字体可以在 agnoster 主题中正常显示

配置终端颜色方案

主题上的配置至此就差不多了,然而 macOS Mojave 默认终端的黑底白字看起来还是有些不舒服。在这里,我们不妨使用 Solarized 配色方案来进一步美化终端。首先,使用以下命令下载 Solarized 配色方案:

cd ~/Downloads && git clone git://github.com/altercation/solarized.git #将配色方案下载到「下载」文件夹中 
  • 1.

下载完毕后,我们按 ⌘, 打开终端偏好设置,点击「描述文件 > ⚙︎⌄ > 导入」。

导入选项

在弹出的窗口中,定位到 Downloads > solarized > osx-terminal.app-colors-solarized ,双击  Solarized Dark ansi.terminal 导入暗色的 Solarized 配色方案。

选择下载好的 Solarized 配色方案

随后,我们在描述文件中选中 Solarized Dark ansi,点击「默认」将其设为默认配色方案;别忘了把字体改为 Powerline 字体并调整大小。

别忘记改字体

配色细节修改

重启一下终端,到这里,我们漂亮的终端已经基本完成了,但是现在的配色让人有些看不清字:

有些看不清字

重度强迫症的我肯定不能接受。因此我们按 ⌘, 打开终端偏好设置,点击「描述文件 > Solarized Dark ansi」,对配色进行进一步的自定义。单击你想要更改的颜色,在弹出的小窗口中点选拾色器(像吸管一样的东西)。

拾色器

随后,你可以参考下图把颜色一项一项吸过去。这里我的配置综合了 iTerm 2 的配色和个人的少量修改。

配色方案参考

还有一项让我不爽的地方 —— 文件目录前那个长长的 demo@Stevens-MacBook-Pro 。通过修改主题配置文件,我们就能去掉它。使用以下命令编辑 agnoster 主题的配置文件:

vim ~/.oh-my-zsh/themes/agnoster.zsh-theme 
  • 1.

定位到以下内容:

# Context: user@hostname (who am I and where am I) 
prompt_context() { 
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then 
prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m" 
fi 

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

在 prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m" 前面加一个注释符号  # ,保存退出,执行  source ~/.zshrc 使配置立即生效即可。

配置插件

Oh My Zsh 支持许多强大的插件,可以实现语法高亮、命令自动补全等功能。你可以执行以下命令查看自带的插件:

ls ~/.oh-my-zsh/plugins/ 
  • 1.

对于自带插件的功能及使用,你可以前往 Oh My Zsh 官方 Wiki 查看。

要启用某个插件,只需要用 vim ~/.zshrc 编辑 zsh 配置文件,定位到  plugins 一行,在括号中添加需要的插件名称,以空格分隔。保存退出后,别忘了执行   source ~/.zshrc 使配置立即生效。

修改 plugins 一行的配置启用插件

我使用的插件

git

默认启用的插件,提供了各种 git 命令的缩写。其  官方说明 提供了所有缩写的参考。

z

自带插件,添加到配置文件中即可启用,可以帮助你快速跳转到访问过的文件夹。具体使用方法请自行 Google 或参考 GitHub 文档 。

zsh-syntax-highlighting

输入正确的常用命令会以绿色高亮显示,输入错误则会显示其他的颜色。使用以下命令安装:

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

下载完成后,别忘了把 zsh-syntax-highlighting 添加到配置文件的  plugins 中,并执行  source ~/.zshrc 使配置生效。

zsh-autosuggestions

输入命令时,会用浅色字体给出建议的命令,按  即可自动补全。使用以下命令安装:

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

下载完成后,别忘了把 zsh-autosuggestions 添加到配置文件的  plugins 中,并执行  source ~/.zshrc 使配置生效。

为了让提示的字体颜色正确显示,我们还需要执行:

echo "export TERM=xterm-256color" >> ~/.zshrc   #声明终端类型 
echo "ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10'" >> ~/.zshrc  #设置建议命令的文字颜色 
  • 1.
  • 2.

你可以修改 fg= 后的数字来指定建议命令的文字颜色,数字与颜色的对应表请参考  这里 。

小结

至此,你已经完成了 Oh My Zsh 在 macOS 下的基本配置。现在你获得了一个更漂亮、更强大的终端,相信这能让你在终端下进行操作时事半功倍。