对于经常在 Linux 环境下干活的开发者来说,Shell 是我们使用最频繁的程序了,Shell 在程序员和服务器间建立了一个桥梁,它对外提供一系列命令,通过这些命令,可以让服务器知道我们的意图,有了 Shell 我们就可以和机器进行愉快的交流了。
比如,用 ls
命令列举当前目录的文件,用 find
命令查找文件,用 cp
命令拷贝文件,用 top
命令查看机器负载和进程等。常用的 Bash 就是 Shell 的一种,也是 Linux 下的默认 Shell 程序,现在让我们开始使用 Zsh,重新定义一个更强大,更人性化的 Shell。
Zsh 是什么
Zsh 属于 Shell 的一种,和 Bash 一样,但比 Bash 更好用,Zsh 完全兼容 Bash,拥有极其丰富的插件,其强大的自动补全参数、文件名以及自定义功能,可以大大提高我们使用 Linux 的效率。
安装 Zsh
说了这么多,让我们安装 Zsh 尝尝鲜吧,登录我们的滴滴云 DC2 服务器,首先我们看下服务器已经有哪些 Shell 可用:
[dc2-user@10-254-19-116 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
可以看到滴滴云 DC2 服务器已经安装了如上 6 种 Zhell,现在来安装 Zsh,非常简单,如果是 CentOS 系统,只用下面一条命令即可安装成功:
sudo yum install zsh
安装完毕后,再次看下系统现在有哪些 Shell:
[dc2-user@10-254-19-116 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/zsh
可以看到,Zsh 已经安装成功了
安装 oh-my-zsh
Zsh 虽然好用,但直接用起来还是比较麻烦,不过幸运的是,已经有大神给我们配置好了一个很棒的框架:oh-my-zsh,专门为 Zsh 打造,我们来安装一下,一条命令就可以搞定:
[dc2-user@10-254-19-116 ~]$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
中间会让输入 dc2-user 用户密码,没意外的话,会看到如下输出,安装完毕后,会发现命令行的颜色已经变了:
Cloning Oh My Zsh...
Cloning into '/home/dc2-user/.oh-my-zsh'...
remote: Enumerating objects: 991, done.
remote: Counting objects: 100% (991/991), done.
remote: Compressing objects: 100% (909/909), done.
remote: Total 991 (delta 25), reused 838 (delta 18), pack-reused 0
Receiving objects: 100% (991/991), 640.18 KiB | 313.00 KiB/s, done.
Resolving deltas: 100% (25/25), done.
Looking for an existing zsh config...
Using the Oh My Zsh template file and adding it to ~/.zshrc
Time to change your default shell to zsh!
Changing shell for dc2-user.
Password:
Shell changed.
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __ / __ / __ `__ / / / / /_ / / ___/ __
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
____/_/ /_/ /_/ /_/ /_/__, / /___/____/_/ /_/
/____/ ....is now installed!
Please look over the ~/.zshrc file to select plugins, themes, and options.
p.s. Follow us at https://twitter.com/ohmyzsh.
p.p.s. Get stickers and t-shirts at https://shop.planetargon.com.
使用
接下来我们简单配置和学习下 oh-my-zsh 的使用方式。
主题
首先设置下主题,oh-my-zsh 提供了很多主题,主题的配置文件在 ~/.zshrc 文件中可以看到,打开该文件,找到下面这行:
ZSH_THEME="robbyrussel"
可以将值改为其他任意主题,oh-my-zsh 的主题可以在这里找到。改好保存文件后,执行 source ~/.zshrc
使配置生效。当然,如果你再狂野点,直接将值设置为”random”也是可以的,以后每次登陆服务器,oh-my-zsh 会随机选择一个主题,总有一款适合你。
命令补全
虽然 Bash 下,tab 是一个好用的命令补全键,但 oh-my-zsh 提供了更加强大的命令补全工具,很多时候,你只需要输入一条命令,然后按 tab,oh-my-zsh 就可以自动给你补全该条命令其他的参数,比如你想进入到 Nginx 所在目录 /usr/local/nginx
,输入 cd /u/l/n
,按下 tab,系统自动帮你补全这条命令,变为 cd /usr/local/nginx
;再比如,输入 git
,按两下 tab,oh-my-zsh 给你返回关于 git 的一些其他命令。
你也可以使用 alias
命令,会发现 oh-my-zsh 默认已经把很多经常用的命令给我们做好了别名。
如果不满足于上述这种命令补全,还有终极大杀器— autosuggestions,安装方式简单,强烈推荐安装,简直是懒人的福音。
在目录中穿越
我们经常会遇到这样一个场景:先进入一个很深的目录,然后又换到另一个目录下的,如果要返回之前的某个目录,通常我们会使用 cd -
返回最近一次目录,或者使用 history
去查找更早之前的目录,不过 oh-my-zsh 给我们提供了强大的 d
命令,有了它,可以简化以上步骤。
d
命令会列出我们最近进入的目录历史,并且会给这些目录加上序号,只需要输入对应目录的序号,即可重新进入该目录,如下图所示,d
命令列出了我最近进入的几个目录,其中序号为 2 的目录是我的 Nginx 目录,直接输入 2,立马跳回到 Nginx 所在目录。
![219fde3c235cb00427224504999639f4.png](https://i-blog.csdnimg.cn/blog_migrate/ca46fd5abfc9b66ec4c6ed05ff05dfcc.jpeg)
当然目录跳转还可以有其他工具,比如 autojump 就是一个非常好用的跳转插件。
关于 Git
用 Git 做版本管理的同学,经常需要对仓库的代码进行 status
,add
,commit
等操作,以及审视 Git 仓库的提交状态,oh-my-zsh 对 Git 有很友好的支持,如下图所示,我们 cd
到一个目录,发现命令行前多了一对括号,括号中的 master 表示当前目录是一个 Git 仓库,且在 master 分支下,如果当前分支有文件改动,master 后面增加了一个*
号,表示工作区有文件被修改,但没有进行 add
,执行 git add
后,*
变成了 +
,表示添加到了暂存区,再执行 git commit
,master 后面的符号消失,工作区又干净了。切换分支,括号里变为 dev,表示当前已经是 dev 分支。
![482238b9482f00e4d9329924f1e31cfd.png](https://i-blog.csdnimg.cn/blog_migrate/935521783af54a68f54cc9a093db1ee1.png)
有了这些醒目的标识,我们再也不用频繁看当前是哪个分支、当前仓库是否有未提交的改动了。需要注意的是,不同的主题,对应的 Git 状态标识也是不一样的,大家可以根据个人喜好来选择。
总结
由以上可以看出,Zsh 配合 oh-my-zsh,可以大大方便我们在 Linux 下敲命令的任务,以上只是 Zsh 很少的一部分,oh-my-zsh 还有很多插件和使用方法,等待大家去发掘。
本文作者:许基伟
滴滴云-为开发者而生www.didiyun.com![a79dfd114cd31d4d147dd16e54c137bc.png](https://i-blog.csdnimg.cn/blog_migrate/24bc5a28b21ecb409d15cbc24290cd15.jpeg)