使用zsh的十大优点

优点1:

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


优点2:

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


wKiom1cUgGmhs7sOAAAh3Xd7UZg533.png



优点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个目录等候你选择。


wKioL1cUgSfDg4sUAAAjClJsyi4213.png


wKioL1cUinXwtepAAAAoRhlBg14007.png


wKioL1cVlmTBouD4AABXDlQubiU012.png


优点4:

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


wKioL1cUgSigwyP4AABOp6DT8pE635.png


优点5:

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

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

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


wKiom1cUgGrxcQXjAAAqL2p02oY250.png


优点6:

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



优点7:

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

1
ZSH_THEME= "ys"

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

https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes

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

https://www.zhihu.com/question/33277508

然后我用的是这个主题:


wKioL1cUgSiw0ycEAAAdRt7g_Ls590.png


优点8:

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

1
2
3
alias  -s py=vim
alias  -s html=vim
alias  -s tgz= 'tar zxvf'


优点9:

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


1
2
3
4
5
6
7
8
9
10
11
##在命令前插入 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
#}}}


wKioL1cUgSfD48mxAAAsbZ1dM6U050.png


优点10:

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

wKioL1cUgSjjDNTTAAAiBvyCs-g626.png


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


wKiom1cUggixsF0eAAAIXwyUgTI071.png

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


wKiom1cUgm7hFuNoAAAI_w3rM9s063.png

后面的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的方式:

wKiom1cUhXegjuZrAADWK4vHGH8988.png


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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  in  $user_commands;  do alias  sc-$c= "systemctl $c" done
for  in  $sudo_commands;  do alias  sc-$c= "sudo systemctl $c" done
alias  sc- enable -now= "sc-enable --now"
alias  sc-disable-now= "sc-disable --now"
alias  sc-mask-now= "sc-mask --now"


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

https://github.com/sangrealest/shell/blob/master/init_zsh.sh

或者参考这篇文章:

http://shanker.blog.51cto.com/1189689/1737213

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值