用 ZSH 替换 Bash 吧

ZSH 和 Bash 都是 Shell

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

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

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

安装

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

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

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

chsh -s /bin/zsh

配置

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

sudo nano ~/.zshrc

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

ZSH_THEME="robbyrussell"

重启 iTerm2 完工

插件

ZSH 有个很著名的插件叫 autojump

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

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后再装 autojump

brew install autojump

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

[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

使用

(引用自此

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,文件太多就歇菜了。

……