[关闭]
@qidiandasheng 2016-11-12T13:41:58.000000Z 字数 3618 阅读 2755

Shell之zsh

使用工具


什么是Shell

介绍什么是Shell直接看MACTALK里的介绍:

Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。

Linux/Unix提供了很多种Shell,为毛要这么多Shell?难道用来炒着吃么?那我问你,你同类型的衣服怎么有那么多件?花色,质地还不一样。写程序比买衣服复杂多了,而且程序员往往负责把复杂的事情搞简单,简单的事情搞复杂。牛程序员看到不爽的Shell,就会自己重新写一套,慢慢形成了一些标准,常用的Shell有这么几种,sh、bash、csh等。

介绍zsh

目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh, 这货绝对是马车中的跑车,跑车中的飞行车,史称『终极 Shell』,但是由于配置过于复杂,所以初期无人问津,很多人跑过来看看 zsh 的配置指南,什么都不说转身就走了。直到有一天,国外有个穷极无聊的程序员开发出了一个能够让你快速上手的zsh项目,叫做「oh my zsh」。

所以说虽然mac 预装了zsh ,但是很少有人使用此shell ,因为 zsh 的默认配置及其复杂繁琐。oh my zsh这个开源项目,让zsh配置降到0门槛,而且它完全兼容 bash。安装oh my zsh时,它自动读取你的环境变量并且自动帮 zsh 进行设置。

zsh优点

补全

zsh 的命令补全功能非常强大,可以补齐路径,补齐命令,补齐参数等。但是oh my zsh会使你的补全更加强大。

原来没有使用oh my zsh的话直接使用tab键能显示出所有待选项,但是选择特别麻烦,不能使用上下左右键选择。

使用了oh my zsh之后就能第一次tab后显示出所有待选项,再按一次 tab 键,进入选择模式,然后按上下左右键进行选择,并且当前选择的会有高亮。

alias设置别名

alias其实就是把你一些平时觉得麻烦的命令简化成你自己记得的别名,下次直使用这个别名就行了。

比如我常常在要cd到某个特别长的目录:cd /Users/dasheng/Work/pod/Example我会觉得特别麻烦。所以会设置一下别名。

alias是在对应的shell配置文件下设置的。比如bash下是设置~/.bash_profile,zsh下是~/.zshrc。我们现在在zsh下设置:

  1. //打开文件(你也可以直接文本打开)
  2. vi ~/.zshrc
  3. //写入别名,然后保存
  4. alias GoExample="cd /Users/dasheng/Work/pod/Example"
  5. //重新载入配置令刚才命令生效
  6. source ~/.zshrc
  7. //最后只要输入GoExample就能进入对应的目录了
  8. GoExample

所以我们常常会使用alias设置别名,zsh 不仅支持普通 alias,还支持针对文件类型的 alias。

比如设置:

  1. alias -s gz='tar -xzvf'
  2. alias -s tgz='tar -xzvf'
  3. alias -s zip='unzip'
  4. alias -s bz2='tar -xjvf'
  5. alias -s php=vi
  6. alias -s py=vi
  7. alias -s rb=vi
  8. alias -s html=vi

在 zsh 下直接输入xxx.rb,将自动用 vi 打开,直接输入xxx.tgz,将直接按照tar -xzvf解压。

目录跳转

zsh 的目录跳转更为智能,你无需输入cd,直接输入路径即可。..表示后退一级目录,../../表示后退两级,依次类推。(...的作用和../../相同)。

输入d,将列出当前 session 访问过的所有目录,再按提示的数字即可进入相应目录。

  1. ~ d
  2. 0 ~
  3. 1 ~/Work/DFC
  4. 2 ~/Work/pod/DFCWeiXin
  5. 3 ~/Work
  6. ~ 2
  7. ~/Work/pod/DFCWeiXin
  8. DFCWeiXin git:(master)

oh my zsh的优点

oh my zsh其实就是一种zsh的配置文件,也就是说它自动的帮你配置了~/.zshrcoh my zsh提供了大量的主题和插件,极大的拓展了 zsh 的功能,推动了 zsh 的流行。

主题

oh-my-zsh 内置了大量主题,可在~/.oh-my-zsh/themes中查看具体的配置。也可在官网查看各种主题的截图,选择自己喜欢的。oh-my-zsh默认的是robbyrussell,可以在.zshrc看到ZSH_THEME="robbyrussell",修改双引号里的主题名为你自己喜欢的主题。然后source ~/.zshrc重启配置文件,就能看到新主题了。

插件

oh-my-zsh 提供极为丰富的插件,在~/.oh-my-zsh/plugins目录下查看具体的配置。在.zshrc中写入plugin(git wd autojump history-substring-search sublime osx)即可使用插件。以下插件按个人觉得的重要程度排序。

wd插件

它的作用就是能够快速的切换到常用的目录。我们用命令行时经常会遇到这样一种情况,我们常用的目录就那么几个,而这些目录有时候会再很深的层级中。使用 cd 命令在这些深层级目录中切换就比较耗费时间了。

wd 插件正是为了解决这个问题,比如我们有一个常用的目录 /Users/dasheng/Work/pod/Example,我们首先进入到这个目录中,然后输入

  1. wd add Example

这个命令相当于给当前目录做了一个标识,标识名叫做 web ,我们下次如果再想进入这个目录,只需输入:

  1. wd Example

这样就可以完成目录切换了,非常方便。

  1. //其实它就类似于alias做了一个目录的别名一样的东西。下面是一些常用命令
  2. //删除对应的映射
  3. wd rm Example
  4. //删除所有的映射
  5. wd clean
  6. //列出所有的映射
  7. wd list
  8. //列出对应目录下的文件
  9. wd ls pod

autojump插件

如果你之前打开过/Users/dasheng/Work/pod/Example目录,现在只需敲入j Example就可以快速切换到/Users/dasheng/Work/pod/Example目录。


history-substring-search插件

你输入的每条命令他会给你记录下时间,并且在你的home目录创建.zsh_history/相对应的目录,并记录你在当前目录下用过的命令。

你只要输入你之前输入过的命令中任何一个字母,然后按上下键,它就会模糊匹配出之前的命令。


sublime插件

该插件可以使用命令行打开sublime。
常用命令如下:

  1. st # 直接打开sublime
  2. st file_a # 用sublime打开文件 file
  3. st dir_a # 用sublime打开目录 dir
  4. stt # 在sublime打开当前目录,相当于 st .

osx插件

该插件增强 Mac 下的使用体验,提供了如下命令:


last-working-dir插件

last-working-dir 插件,可以记录上一次退出命令行时候的所在路径,并且在下一次启动命令行的时候自动恢复到上一次所在的路径。这一切不需要我们进行任何操作,全部都是自动完成的。只需要在 .zshrc 文件中将插件开启即可。


相关命令

查看系统的shell

  1. cat /etc/shells

以下就是Mac默认安装的shell

  1. /bin/bash
  2. /bin/csh
  3. /bin/ksh
  4. /bin/sh
  5. /bin/tcsh
  6. /bin/zsh

切换shell

输入以下命名,打开一个新的终端窗口便可

  1. chsh -s /bin/zsh

安装oh my zsh

curl 安装

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

wget 安装

  1. wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh
  2. 或:
  3. sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

卸载oh my zsh

需要把shell切换到zsh

  1. uninstall_oh_my_zsh

参考

终极 Shell
oh-my-zsh配置你的zsh提高shell逼格终极选择
Oh My Zsh 插件篇 - 实用工具

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注