我在公众号上重新发表了一次,这里我添加了动图,看起来更方便一些。

优点1:

完全兼容bash,之前bash下的使用习惯,shell脚本都可以完全兼容。

优点2:

更强大的tab补全,当你切换目录敲两下tab,他可以列出当前目录下面的所有目录,并且可以使用键盘上下左右键来选择要进入的目录。

优点3:

更智能的切换目录,比如你要进入一个很深的目录,like this /var/log/nginx/error/lastyear/may/first/monday, 用zsh可以这样输入cd /v/l/n/e/l/m/f/m,然后按tab即可补全整个路径。或者你实现知道当前目录名称,可以直接输入目录,即可进去目录。bash下cd - 可以切换到刚才进入的目录,在zsh下可以记录最近进去过的10个目录,只需要输入d,然后看到对应的0-9的目录,输入cd -数字,即可进入对应的目录。或者直接输入cd -然他后TAB一下,你会发现有最近使用过的31个目录等候你选择。

优点4:

命令选项补齐,比如输入yum,然后按tab,即可显示出yum都有哪些命令选项。

优点5:

命令参数补齐,比如要kill一个进程,直接输入kill 进程名,会自动显示出进程的process id,

如果用ssh,则会输出最近用ssh 连接过的主机名,配合.zshrc还可以实现自定义ping命令自动补齐的命令参数。

zstyle ':completion:*:ping:*' hosts 192.168.1.{1,50,51,100,101}

优点6:

大小写字母自动更正,比如我们要cat一下README.txt,直接输入cat readme.txt TAB,之后zsh就会把小写的readme改成大写的。这个功能很好用哦。

优点7:

有着丰富多彩的主题,如果你使用我的脚本安装oh-my-zsh的项目的话,在~/.oh-my-zsh/themes里会找到多达142个主题,看中哪个主题直接在~/.zshrc 里面更改:

ZSH_THEME="ys"

想要看其他的主题,可以看官网的这个地址:

或者知乎上的这个讨论地址:

然后我用的是这个主题:

优点8:

更强大的alias命令,比如下面命令,当你在zsh环境下输入hello.py即可直接用vim打开文件编辑,一个tgz的文件即可自动解压缩。

alias -s py=vimalias -s html=vimalias -s tgz='tar zxvf'

优点9:

智能命令错误纠正,比如输入apt-gte install somefile,回车后,zsh会提示你是否纠正apt-gte 为apt-get?输入y,后即是正确命令执行。在配合一下zshrc的profile的sudo命令设置,按两下ESC,即可在命令的前面自动加上sudo。

##在命令前插入 sudo {
{
{#定义功能sudo-command-line() {[[ -z $BUFFER ]] && zle up-history[[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"zle end-of-line                 #光标移动到行末}zle -N sudo-command-line#定义快捷键为: [Esc] [Esc]bindkey "\e\e" sudo-command-line#}}}

优点10:

最最强大的优点是可以集成各种类型的插件,比如切换目录的可以继承autojump,想跳转到哪里,直接j 加目录名称,真的非常强大,非常便利,这个bash也可以使用。比如想要去nginx目录,可以直接输入j nginx,他会搜索使用率最高的nginx的路径,如果想要去/var/log/下的nginx呢,直接输入j v ng,效果如下:

在比如git插件,当你在一个git 仓库的时候你的zsh PS1是这样显示的,

会面会跟git 是master 还是 branch,然后的o 表示当前没有modify,也是最新的,比如我们更改一个文件,立马变成如下:

后面的o变成了x,代表你的本地仓库有更新。

在比如说你在你的仓库里新添加了几个文件,当你使用git add的时候多按几次TAB,你的新添加的文件就都补上了。

还有一个比较厉害的插件是history-substring-search, 强大到令人发指,首先你输入的每条命令他会给你记录下时间,并且在你的home目录创建.zsh_history/相对应的目录,并记录你在当前目录下用过的命令。

比如输入ansible,按上下箭头,即可搜索之前使用过的包括ansible的命令,而且是完全匹配,怎么说呢,就是比如说输入“ansi” 他就会匹配命令当中包含“ansi”的,如果输入“ansible all” 他就会匹配完全包含“ansible all”的命令,强大的地方在于当你输入ansible 上箭头比如找到这条命令ansible all -m shell -a 'update',你可以左右光标符到m,然后上下翻命令,这时候搜索的就是"ansible all -"。也可以用histall | grep ansible的方式:

zsh还有很多强大的plugin值得去研究一下,比如集成docker的,aws的,go,python等等。还有大部分不习惯centos7的systemctl命令的,有个systemd的插件值得一用。

# root at shanker in ~/.oh-my-zsh/plugins/systemd on git:master o [7:17:36]# less systemd.plugin.zsh user_commands=(  list-units is-active status show help list-unit-files  is-enabled list-jobs show-environment cat)sudo_commands=(  start stop reload restart try-restart isolate kill  reset-failed enable disable reenable preset mask unmask  link load cancel set-environment unset-environment  edit)for c in $user_commands; do; alias sc-$c="systemctl $c"; donefor c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; donealias sc-enable-now="sc-enable --now"alias sc-disable-now="sc-disable --now"alias sc-mask-now="sc-mask --now"

如果大家觉得好用,可以用我写的自动化安装脚本,只支持centos like和ubuntu like系统哦。

或者参考这篇文章:

欢迎补充!