6.1 配置框架
无论是 bash,还是 zsh,我们都能根据自己的好恶来进行配置。这样的好处是配置完全由自己所掌控。但其缺点也很明显,那就是不便于公开分享和贡献。正因为如此,一些 Shell 配置框架应运而生。所谓“众人拾柴火焰高”,积社区之力,Shell 配置框架的内容极其丰富。这使我们得以能够直接将其拿来享用。
虽然现在有很多 Shell 配置框架可以选择,有的宣称很轻量,也有的号称速度快,但是我们将根据流行度和活跃性来进行选择。经过综合比较,我们选择的 bash 配置框架是 Bash-it,zsh 配置框架是 Oh My Zsh。下面,我们将分别进行介绍。
6.1.1 bash 配置框架
Bash-it 配置框架从社区收集了许多实用的命令和脚本,主要包括别名、自动补全代码、定制函数、以及提示符主题等四大类型。得益于 Bash-it 良好的模块化架构,我们也可以添加自己的定制内容。
6.1.1.1 安装
因为 Bash-it 位于 GitHub 上,所以在安装 Bash-it 之前,首先需要确认的是系统中是否含有 git
命令:
如果输出内容为:
则可进行下一个安装步骤。否则,可通过所用操作系统的软件包管理器(如 apt
、yum
、pacman
、emerge
等)来安装。
接着,使用 git
命令将 Bash-it 克隆到用户主目录下的 .bash_it
子目录:
然后,执行 install.sh
安装脚本来安装 Bash-it:
xiaodong@codeland:~$ cd ~/.bash_it
xiaodong@codeland:~/.bash_it$ ./install.sh -h
xiaodong@codeland:~/.bash_it$ ./install.sh
install.sh
脚本包括下列 3 个选项,大家可根据需要使用:
interactive (-i)
:这个选项允许我们交互式选择要启用哪些别名、自动补全和插件。--silent (-s)
:静默安装,没有任何输入提示。--no-modify-config (-n)
:不修改现有的 bash 配置文件.bashrc
或.bash_profile
。
我们不加任何选项,采用默认安装。在安装脚本询问是否保留 .bashrc
并追加 Bash-it 模板内容时,回答“N”。这样,我们原有的 .bashrc
配置文件将备份为 .bashrc.bak
。
当看到“安装成功完成”的消息时,则说明 Bash-it 安装成功。如图 6.1 所示。
最后,我们关闭并重新打开终端(远端机器则注销并重新登录)或者执行下面的命令就可以开始使用 Bash-it 了:
6.1.1.2 查看别名、补全和插件
Bash-it 的 install.sh
脚本在默认情况下只会启用少量的别名、自动补全和插件,下面就让我们找出来。
首先,我们来看看启用了哪些别名:
该命令的输出分为 3 列,第一列为别名的名称,第二列显示该别名是否启用(启用的别名在 [] 中有 X),最后一列是有关别名的说明。如图 6.2 所示。
在此我们可以看到 Bash-it 启用了 general、apt、ansible 等别名。
接着,我们看看启用了哪些自动补全:
我们发现 system、bash-it 等自动补全已经启用了。如图 6.3 所示。
最后,我们再看看启用了哪些插件:
在输出中显示 base、alias-completion 等插件已经启用。如图 6.4 所示。
6.1.1.3 搜索内容
除了直接列出所有的别名、自动补全和插件之外,Bash-it 还提供了一个非常快捷的方式来查找所需的内容。比如,我们想要看看有关 tmux 和 ansible 的情况,不妨执行以下命令:
xiaodong@codeland:~$ bash-it search tmux ansible
aliases: ansible tmux
plugins: tmux tmuxinator
completions: tmux
从命令输出中我们看到 tmux 的别名、补全和插件都没有启用,而 ansible 的别名已经启用,因为其颜色为绿色。
6.1.1.4 启用别名、补全和插件
既然 Bash-it 为我们提供了如此丰富的别名、自动补全和插件,那么不用的话就太可惜了。下面,我们就来分别看看如何启用别名、自动补全和插件。
时下非常流行的版本控制系统 Git,相信大家都有过接触和使用。让我们先启用 git 别名:
Bash-it 为我们回显出启用的结果,并设置优先级 150。
接着,我们执行以下命令:
以便让 Bash-it 自动为我们重新载入配置。这样,我们就能够立即开始使用刚才启用的 git 别名。但是,到底有哪些 git 别名呢?别着急,我们可以通过下面的命令了解:
大致估算一下,Bash-it 提供的 git 别名差不多有近 80 个,实在是非常多。如图 6.5 所示。
最后,我们拿 Bash-it 的源代码目录来验证 git 别名是否生效:
xiaodong@codeland:~$ cd ~/.bash_it
xiaodong@codeland:~/.bash_it$ gs
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
从 gs
所显示出的 git 仓库状态,我们可以确信 git 别名一切正常。
再来让我们启用 git 自动补全:
与启用 git 别名类似,在启用 git 自动补全时,Bash-it 也为其分配了一个优先级 350。
还有 git 插件,我们也将其启用:
Bash-it 命令的输出仍然与启用别名和自动补全时相似。
除了通过 bash-it enable
命令来启用别名、自动补全和插件外,我们也可以在搜索模块和组件时加以启用。例如:
xiaodong@codeland:~$ bash-it search git --enable
aliases: git gitsvn
plugins: autojump fasd git git-subrepo jgitflow jump
completions: git git_flow git_flow_avh
这样,将把包含 git 关键字的所有别名、自动补全和插件全都启用。本例中的 gitsvn、jgitflow、git_flow 也一并启用了。
此外,我们也可以通过下列命令来分别启用所有的别名、自动补全和插件:
xiaodong@codeland:~$ bash-it enable alias all
xiaodong@codeland:~$ bash-it enable completion all
xiaodong@codeland:~$ bash-it enable plugin all
禁用别名、自动补全和插件跟启用时类似,只是把 enable 换成 disable 即可。比如,假设我们想要禁用 gitsvn 别名,则可以执行:
如果禁用成功,Bash-it 命令输出如下结果:
6.1.1.5 更改主题
Bash-it 随附了大约 50 多个提示符主题样式,如果想要看看这些主题的真实外观,那么我们可以执行下面的命令:
Bash-it 的默认主题为 bobby。要是你不喜欢的话,那么可以将其更改为别的主题。不过,Bash-it 并没有提供相关的更改命令,我们需要直接编辑 .bashrc
配置文件。
使用文本编辑器(如 vim)打开 ~/.bashrc
:
然后找到下行内容:
将单引号中的内容(bobby)替换成别的主题名称(如 powerline),并保存即可。
为了使新设置的提示符主题生效,你需要关闭并重新打开终端,或者注销并重新登录。如图 6.6 所示。
6.1.1.6 定制别名、插件和主题
Bash-it 的确为我们提供了不少好用的别名、自动补全和插件,然而,我们还是有不能满足的时候。为此,Bash-it 提供了一种方便我们进行定制的机制,可以定制的内容包括别名、自动补全、插件、主题样式等等,它们的路径和名称如下:
aliases/custom.aliases.bash
:别名completion/custom.completion.bash
:自动补全lib/custom.bash
:库plugins/custom.plugins.bash
:插件custom/themes/<theme name>/<theme name>.theme.bash
:主题样式
在此,我们以如何定制别名为例来说明,其它类型的定制方法类似,无非就是以特定的名称命名并放在确定的目录。
首先,我们在 aliases
目录下使用文本编辑器(如 vim)创建 custom.aliases.bash
文件:
接着,添加具体的别名内容:
编辑完成后保存。
然后,我们可以利用以下命令来查看:
末尾显示的 custom 正是我们添加的内容。
我们再重新加载一下配置:
现在,我们刚刚添加的定制别名就可以开始使用了:
6.1.2 zsh 配置框架
与 Bash-it 一样,Oh My Zsh 也是开源的社区性项目。在所有的 zsh 配置框架中,Oh My Zsh 算得上是最流行的。Oh My Zsh 包含了许多来自 zsh 社区的好东东,它主要体现在插件、实用的函数、辅助例程、提示符主题样式等方面。
6.1.2.1 安装 Oh My Zsh
因为 Oh My Zsh 的安装依赖 git 和 curl(或 wget),所以在安装它之前,我们先检查一下系统中是否存在它们:
如果以上命令没有返回结果,那么我们需要先把它们安装到系统中。
好了,若是一切准备就绪,现在就可以执行下面的命令来安装 Oh My Zsh:
xiaodong@codeland:~$ sh -c \
"$(curl -fsSL
https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
安装过程要花一会儿功夫,我们需耐心等待。Oh My Zsh 在安装时将对原来的 .zshrc
配置文件备份,若是出现“….is now installed!”的字样时,就说明 Oh My Zsh 安装成功了。如图 6.7 所示。
6.1.2.2 启用插件
在安装时,Oh My Zsh 只启用了一个 git 插件。若想用得更舒服,我们就得启用其它插件。对 Oh My Zsh 而言,所谓插件通常包括别名、实用函数、自动补全等内容。在启用其它插件之前,也许你想要了解一下 Oh My Zsh 到底有哪些插件?为此,我们可以转到 Oh My Zsh 安装目录下的 plugins
子目录查看:
我们可以看到,在 Oh My Zsh 中,每个插件都有一个单独的目录。例如,我们继续进入 systemd
目录:
xiaodong@codeland:~/.oh-my-zsh/plugins$ cd systemd
xiaodong@codeland:~/.oh-my-zsh/plugins/systemd$ ls
其下包含 README.md
和 systemd.plugin.zsh
两个文件。前者为有关该插件的使用说明,而后者为 systemd
插件的源代码。如图 6.8。
另外,我们也可以通过浏览器查看 Oh My Zsh 的 Wiki 页面来了解它有哪些插件。
在知晓了有哪些插件及其插件的用途后,现在我们就来启用插件。我们先使用文本编辑器打开 .zshrc
配置文件:
然后找到下行内容:
将需要启用的插件追加到 git
后面即可。
我们在此启用了 colored-man-pages
和 systemd
插件。
为了使启用的插件生效,我们还需要执行下面的命令:
现在让我们来验证一下启用的插件,如图 6.9 和 6.10 所示。
6.1.2.3 更换主题
Oh My Zsh 的默认提示符主题样式是 robbyrussell,若是你不喜欢,那么可以更换成别的主题样式。在 Oh My Zsh 中包含有上百个主题样式,每种主题样式的外观可通过其 Wiki 页面查看。
一旦选定了 Oh My Zsh 的主题样式,便可通过编辑 .zshrc
配置文件的方式来更换。
在 zshrc
文件中找到下面这行:
将双引号中的内容替换成另外的主题样式名称(如 simple)。如果你拿不定主意选哪个主题样式,那么不妨将其设置为 random
。这样,Oh My Zsh 就会为你随机选择一种主题样式。
保存编辑后执行以下命令以便使更改生效,如图 6.11 所示。
6.1.2.4 定制插件和主题
虽然 Oh My Zsh 已经涵盖了不少插件和主题,但是我们还是有可能去添加一些个性化的东西。直接修改原有内容的方法明显不可取。为了解决这个问题,Oh My Zsh 提供了一个名为 custom
的目录。我们只需把要定制的内容保存到 .zsh
结尾的文件即可。例如,如果我们打算添加一些新的别名,那么在创建 myaliases.zsh
文件后,再加入下列内容:
xiaodong@codeland:~$ cd ~/.oh-my-zsh/custom
xiaodong@codeland:~$ vim myaliases.zsh
alias sd='shutdown -h now'
alias up='uptime'
然后保存编辑结果,并执行:
现在我们就可以使用新加的别名了:
类似的,如果要定制插件和主题,它们有专门存放的目录。定制的插件代码需放在以下目录:
除了我们自己的插件外,这个目录也可以用来安装外部插件。zsh-syntax-highlighting 是一个为 zsh 提供语法加亮的插件,其实现灵感来自于 fish shell。遗憾的是,该插件并没有包含到 Oh My Zsh 中。为了使用它,我们可以把它安装到上述目录:
xiaodong@codeland:~$ cd ~/.oh-my-zsh/custom/plugins
xiaodong@codeland:~/.oh-my-zsh/custom/plugins$ git clone \
https://github.com/zsh-users/zsh-syntax-highlighting.git
然后在 .zshrc
配置文件中启用:
添加 zsh-syntax-highlighting 前,如图 6.12 所示。
启用 zsh-syntax-highlighting 后,如图 6.13 所示。
此外,要把定制的主题代码放在下面的目录:
6.1.2.5 其它命令和配置
Oh My Zsh 还带了其它几个有趣而实用的命令。下面简单对其作个介绍:
take
:创建新目录,并转到该目录,而且支持多级目录,如:take www/oops
zsh_stats
:列出使用次数最多的 20 个命令,包含使用次数和所占百分比统计,如图 6.14 所示。
此外,Oh My Zsh 也包含其它一些有用的配置,我们可根据自己的需要设置:
6.1.2.6 获取更新
Oh My Zsh 在默认情况下将每隔几周检查是否有更新。若有更新,则予以提示并进行升级。如果你觉得提示烦人的话,那么可以将其关闭。关闭提示更新的方法是,把下行内容追加到 ~/.zshrc
配置文件中:
我们也可以手动更新 Oh My Zsh,为此,可以执行以下命令,结果如图 6.15 所示。