用 ZSH 替换 Bash 吧

ZSH 和 Bash 都是 Shell

多数 Unix 默认的是 Bash,但这并不代表 ZSH 不好

实际上 ZSH 似乎更好,只是配置有点麻烦

于是乎国外有人做了个 “oh my zsh” 的项目来帮助大家快速上手

安装

在终端中运行以下代码,二选一即可

试用后如果感觉 ZSH 不错,可以把它设为默认 Shell

配置

ZSH 的配置全靠 .zshrc 这个文件

具体怎么用可以看 “oh my zsh” 上 README 的说明

那怎么实现我标题图中的效果呢?

这里我用了 iTerm2 来代替 Mac 原生的终端 app,毕竟比较强大

然后要安装 Powerline 配置过的字体,项目在这里

我装的是 Meslo LG S DZ Regular for Powerline

打开 iTerm2 ,在配置的 Profile 里的 Text 选项卡

把 Regular Font 和 Non-ASCII Font 的字体都设为上面装的那个,14pt

然后在 Colors 选修卡中选色彩预设为 Solarized Dark

编辑 .zshrc

修改主题为 agnoster ,所有主题效果看这里

重启 iTerm2 完工

插件

ZSH 有个很著名的插件叫 autojump

要装 autojump 前要先装 Homebrew(需要翻墙)

然后再装 autojump

之后再把下列代码添加到 .zshrc 里

使用

(引用自此

1、兼容 bash,原来使用 bash 的兄弟切换过来毫无压力,该咋用咋用。

2、强大的历史纪录功能,输入 grep 然后用上下箭头可以翻阅你执行的所有 grep 命令。

3、智能拼写纠正,输入gtep mactalk * -R,系统会提示:zsh: correct ‘gtep’ to ‘grep’ [nyae]? 比妹纸贴心吧,她们向来都是让你猜的……

4、各种补全:路径补全、命令补全,命令参数补全,插件内容补全等等。触发补全只需要按一下或两下 tab 键,补全项可以使用 ctrl+n/p/f/b上下左右切换。比如你想杀掉 java 的进程,只需要输入 kill java + tab键,如果只有一个 java 进程,zsh 会自动替换为进程的 pid,如果有多个则会出现选择项供你选择。ssh + 空格 + 两个tab键,zsh会列出所有访问过的主机和用户名进行补全

5、智能跳转,安装了autojump之后,zsh 会自动记录你访问过的目录,通过 j + 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过hadoop-1.0.0目录,输入j hado 即可正确跳转。j –s 可以看你的历史路径库。

6、目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。

7、在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,你甚至不再需要输入 cd 命令了。

8、通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find,文件太多就歇菜了。

……