有些同学可能对Shell不太熟悉。借用池建强的一个解释:简单的说,Shell是Linux/Unix的一个外壳。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。
Linux/Unix提供了很多种Shell,输入以下的命令查看有哪些Shell:
cat /etc/shells
Linux的默认 Shell 都是 bash,既然如此,那我今天为什么要说zsh呢?因为zsh搭配上"oh my zsh"真的好用到爆啊!"oh my zsh"的Github网址点我点我!。
那么如何安装、配置和使用 zsh(我用的是Ubuntu)
1. 安装zsh
sudo apt-get install zsh
2. 安装oh my zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
3. 配置zsh
zsh的配置在当前用户目录的.zshrc里。oh my zsh 在安装时已经自动读取当前的环境变量并进行了设置,你可以继续追加其他环境变量。
- 换主题
打开~/.zshrc。oh my zsh提供了数十种主题,相关文件在~/.oh-my-zsh/themes下,你可以随意选择,我采用的是ys主题。
在~/.zshrc文件中找到
ZSH_THEME="ys"
更改成你想要的主题就好了。
- 插件
oh my zsh里提供了非常多的插件,相关文件在~/.oh-my-zsh/plugins文件夹下,默认有100多种,我们可以根据自己的实际需要加载特定的插件。插件也是在~/.zshrc里配置,找到plugins关键字,你就可以加载自己的插件了,系统默认加载 git ,你可以在后面追加内容。
plugins=(git autojump mvn last-working-dir)
下面简单介绍一下我用的这几个插件:
-
git:当你处于git的目录下时,Shell 会明确显示 git和 branch,如图所示,另外对 git 很多命令进行了简化,例如 gco=’git checkout’、gd=’git diff’、gst=’git status’、g=’git’等等,熟练使用可以大大减少 git 的命令长度,命令内容可以参考~/.oh-my-zsh/plugins/git/git.plugin.zsh
-
autojump
autojump可以说是zsh必备插件,有点双剑合璧的意思。安装了autojump之后,zsh会自动记录你访问过的目录,通过j+目录就可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过~/workspace目录,输入j wor即可正确跳转,如图。j –stat 可以看你的历史路径库。
- last-working-dir
last-working-dir 插件,可以记录上一次退出Shell时的所在路径,并且在下一次启动Shell时自动恢复到退出时所在的路径。这一切不需要进行任何操作,全部都是自动完成的。 - 命令纠错
如图,输入
sudp apt-get install
nyae会提示zsh: correct 'sudp' to 'sudo' [nyae]?接下来直接按y/n就行了。真是太贴心了有木有
那如何开启nyae提示呢?
打开~/.zshrc,找到配置项更改为“true”即可
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="true"
4. 指定zsh为默认Shell
输入命令
chsh -s /bin/zsh
5. zsh操作
- 输入 grep 然后用上下箭头可以翻阅你执行过的所有 grep 命令
- tab补全:路径补全、命令补全,命令参数补全,插件内容补全等等。触发补全只需要按一下或两下 tab 键,补全项可以使用 ctrl+n/p/f/b上下左右切换。
-
目录浏览和跳转:输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转
-
在当前目录下输入 .. 或 … ,或直接输入当前目录名都可以跳转,不再需要输入 cd 命令了。