打造你的终极 shell

打造你的终极 shell

什么是shell ?

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

其实 Linux/Uinx 提供了很多种Shell,常用的Shell 有这几种 sh、bash、csh 。如果你想知道你的linux/Uninx 的系统有哪些Shell 可以输入下面的命令去查看:

1
cat /etc/shells

显示如下:

1
2
3
4
5
6
7

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

目前常用的 Linux、OS X 系统的默认 Shell 都是 bash,但是最牛逼的还是 zsh, 称为 终极 Shell,由于配置过于复杂,所以初期无人问津。有一天,国外有程序员开发出了一个能够让你快速上手的zsh项目,(oh-my-zsh),Github 网址是:(https://github.com/robbyrussell/oh-my-zsh ) 。从此zsh 就变得如此简单和高效。如果你掌握了zsh 这个shell 你在linux 上的使用效率会大大提高,废话不多说,下面我们看看如何安装、配置和使用 zsh。

安装 zsh

Redhat、Centos:

1
sudo yum install zsh

Ubuntu :

1
sudo apt-get install zsh

OSX :系统默认安装了zsh 所以不用安装

Windows : 呵呵,一边玩去。

切换为 zsh

1
chsh -s /bin/zsh

安装 oh my zsh

自动安装:

1
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

手动安装

下载源码

1
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

拷贝配置文件

1
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

退出重启终端你会看到不一样的效果哦

配置zsh

废话不多说 先看我的zsh效果吧 😎

设置别名

1
2
3

echo "alias ll='ls -l'" >> ~/.zshrc
source ~/.zshrc

设置主题

oh-my-zsh 安装后里面内置了许多主题供你选择 只需要修改 ~/.zshrc 文件的 ZSH_THEME 的属性值即可
相关主题文件在~/.oh-my-zsh/themes目录下,你可以随意选择,也可以编辑主题满足自己的变态需求。
我选择的是 cloud 主题 不过cloud 的图标太难看了 所以我打算改造一下哈哈😄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#command
cp ~/.oh-my-zsh/themes/cloud.zsh-theme ~/.oh-my-zsh/themes/(起个名字吧).zsh-theme
vi ~/.oh-my-zsh/themes/(起个名字吧).zsh-theme

#code

if [[ -z $ZSH_THEME_CLOUD_PREFIX ]]; then
ZSH_THEME_CLOUD_PREFIX=' 🐒 ☞ '
fi

PROMPT='%{$fg_bold[cyan]%}$ZSH_THEME_CLOUD_PREFIX %{$fg_bold[green]%}%p %{$fg[green]%}%c %{$fg_bold[cyan]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[green]%}[%{$fg[cyan]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[green]%}] %{$fg[yellow]%}⚡ %{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}]"

重启一下终端见效果 😻

配置插件

oh-my-zsh 项目提供了完善的插件体系,相关的文件在~/.oh-my-zsh/plugins目录下,默认提供了100多种,大家可以根据自己的实际学习和工作环境采用,想了解每个插件的功能,只要打开相关目录下的 zsh 文件看一下就知道了。插件也是在.zshrc里配置,找到plugins关键字,你就可以加载自己的插件了,系统默认加载 git ,你可以在后面追加想要的插件内容 我用了以下这些插件。

1
plugins=(git authojump zsh-autosuggestions incr osx)

简单介绍下面几个插件

git:

当你处于一个 git 项目目录下时,zsh会明确显示 「git」和 branch分支情况,还有 git还有 很多命令进行了简化,例如 gco=’git checkout’、gd=’git diff’、gst=’git status’、g=’git’等等,熟练使用可以大大减少 git 的命令长度,命令内容可以参考
~/.oh-my-zsh/plugins/git/git.plugin.zsh

authojump:

这个东西是个zsh 的神器。 他是基于大数据去跳转到你经常切换的目录。 由于这个东西非常强大。这个以后再说

zsh-autosuggestions:

这是一个通过历史记录自动关联出你想要执行的命令。此插件需要通过github去安装。
参考地址 https://github.com/zsh-users/zsh-autosuggestions

osx:

如果你的电脑是Mac 用这个就对了
tab - 在一个新标签打开当前目录
cdf - cd到当前Finder目录
quick-look - 快速浏览特殊的文件
man-preview - 在Preview应用打开特定的man page
trash - 将特定的文件移到垃圾桶

好了 你的 zsh 打造的已经非常强悍了。到时候在其他不知道zsh的程序员面前秀一下展现你逼格。哈哈 😃