主題設置:
vi ~/.zshrc
theme="edvardm" html
####Cyper的抓屏:
如下是轉載部分:
================================ java
在開始今天的 MacTalk 以前,先問兩個問題吧: python
一、相對於其餘系統,Mac 的主要優點是什麼?
二、大家平時用哪一種 Shell?
…… git
第一個童靴能夠坐下了,Mac 的最大優點是 GUI 和命令行的完美結合,不要把全部注意力放在 Mac 性感的腰身和明媚的顯示屏上好吧,這不是妹紙!第二個童靴你能夠出去面壁了,講了這麼多期 MacTalk 你告訴我還在用 Windows 的 cmd, 你讓 Mac 君情何以堪?哪怕你就說在用 Linux 的 Bash 我也就原諒你了,踢飛! 程序員
上次在「如何學習一門編程語言」裏提到了 Shell,也有讀者問到 Shell 的問題,因此此次給你們說說 Shell 的事。 github
我在「趣談我的建站」裏介紹過一點 Shell,本身的東西借用下不丟人,把扯淡的拿掉,乾貨留下,就是以下內容: shell
Shell是Linux/Unix的一個外殼,你理解成衣服也行。它負責外界與Linux內核的交互,接收用戶或其餘應用程序的命令,而後把這些命令轉化成內核能理解的語言,傳給內核,內核是真正幹活的,幹完以後再把結果返回用戶或應用程序。 編程
Linux/Unix提供了不少種Shell,爲毛要這麼多Shell?難道用來炒着吃麼?那我問你,你同類型的衣服怎麼有那麼多件?花色,質地還不同。寫程序比買衣服複雜多了,並且程序員每每負責把複雜的事情搞簡單,簡單的事情搞複雜。牛程序員看到不爽的Shell,就會本身從新寫一套,慢慢造成了一些標準,經常使用的Shell有這麼幾種,sh、bash、csh等,想知道你的系統有幾種shell,能夠經過如下命令查看: vim
cat /etc/shells
顯示以下: ruby
/bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
在 Linux 裏執行這個命令和 Mac 略有不一樣,你會發現 Mac 多了一個 zsh,也就是說 OS X 系統預裝了個 zsh,這是個神馬 Shell 呢?
目前經常使用的 Linux 系統和 OS X 系統的默認 Shell 都是 bash,可是真正強大的 Shell 是深藏不露的 zsh, 這貨絕對是馬車中的跑車,跑車中的飛行車,史稱『終極 Shell』,可是因爲配置過於複雜,因此初期無人問津,不少人跑過來看看 zsh 的配置指南,什麼都不說轉身就走了。直到有一天,國外有個窮極無聊的程序員開發出了一個可以讓你快速上手的zsh項目,叫作「oh my zsh」,Github 網址是:https://github.com/robbyrussell/oh-my-zsh。這玩意就像「X天叫你學會 C++」系列,可讓你神功速成,並且是真的。
好,下面咱們看看如何安裝、配置和使用 zsh。
若是你用 Mac,就能夠直接看下一節
若是你用 Redhat Linux,執行:sudo yum install zsh
若是你用 Ubuntu Linux,執行:sudo apt-get install zsh
若是你用 Windows……去洗洗睡吧。
安裝完成後設置當前用戶使用 zsh:chsh -s /bin/zsh,根據提示輸入當前用戶的密碼就能夠了。
首先安裝 git,安裝方式同上,把 zsh 換成 git 便可。
安裝「oh my zsh」能夠自動安裝也能夠手動安裝。
自動安裝:
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
手動安裝:
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
都不復雜,安裝完成以後退出當前會話從新打開一個終端窗口,你就能夠見到這個彩色的提示了:
zsh 的配置主要集中在用戶當前目錄的.zshrc裏,用 vim 或你喜歡的其餘編輯器打開.zshrc,在最下面會發現這麼一行字:
# Customize to your needs…
能夠在此處定義本身的環境變量和別名,固然,oh my zsh 在安裝時已經自動讀取當前的環境變量並進行了設置,你能夠繼續追加其餘環境變量。
接下來進行別名的設置,我本身的部分配置以下:
alias cls='clear' alias ll='ls -l' alias la='ls -a' alias vi='vim' alias javac="javac -J-Dfile.encoding=utf8" alias grep="grep --color=auto" alias -s html=mate # 在命令行直接輸入後綴爲 html 的文件名,會在 TextMate 中打開 alias -s rb=mate # 在命令行直接輸入 ruby 文件,會在 TextMate 中打開 alias -s py=vi # 在命令行直接輸入 python 文件,會用 vim 中打開,如下相似 alias -s js=vi alias -s c=vi alias -s java=vi alias -s txt=vi alias -s gz='tar -xzvf' alias -s tgz='tar -xzvf' alias -s zip='unzip' alias -s bz2='tar -xjvf'
zsh 的牛糞之處在於不只能夠設置通用別名,還能針對文件類型設置對應的打開程序,好比:
alias -s html=mate,意思就是你在命令行輸入 hello.html,zsh會爲你自動打開 TextMat 並讀取 hello.html; alias -s gz='tar -xzvf',表示自動解壓後綴爲 gz 的壓縮包。
總之,只有想不到,木有作不到,嚇尿了吧。
設置完環境變量和別名以後,基本上就能夠用了,若是你是個主題控,還能夠玩玩 zsh 的主題。在 .zshrc 裏找到ZSH_THEME,就能夠設置主題了,默認主題是:
ZSH_THEME=」robbyrussell」
oh my zsh 提供了數十種主題,相關文件在~/.oh-my-zsh/themes目錄下,你能夠隨意選擇,也能夠編輯主題知足本身的變態需求,我採用了默認主題robbyrussell,不過作了一點小小的改動:
PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}>' #PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
對照原來的版本,我把 c 改成 d,c 表示當前目錄,d 表示絕對路徑,另外在末尾增長了一個「 > 」,改完以後的效果是這樣的:
你們能夠嘗試進行改造,也算個趣事。
最後咱們來講說插件。
oh my zsh 項目提供了完善的插件體系,相關的文件在~/.oh-my-zsh/plugins目錄下,默認提供了100多種,你們能夠根據本身的實際學習和工做環境採用,想了解每一個插件的功能,只要打開相關目錄下的 zsh 文件看一下就知道了。插件也是在.zshrc裏配置,找到plugins關鍵字,你就能夠加載本身的插件了,系統默認加載 git ,你能夠在後面追加內容,以下:
plugins=(git textmate ruby autojump osx mvn gradle)
下面簡單介紹幾個:
一、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
二、textmate:mr能夠建立 ruby 的框架項目,tm finename 能夠用 textmate 打開指定文件。
三、osx:tab 加強,quick-look filename 能夠直接預覽文件,man-preview grep 能夠生成 grep手冊 的pdf 版本等。
四、autojump:zsh 和 autojump 的組合造成了 zsh 下最強悍的插件,今天咱們主要說說這貨。
首先安裝autojump,若是你用 Mac,可使用 brew 安裝:
brew install autojump
若是是 Linux,去下載 autojump 的最新版本,好比:
git clone git://github.com/joelthelion/autojump.git
解壓縮後進入目錄,執行
./install.py
最後把如下代碼加入.zshrc:
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh
至此,安裝、配置、插件三位一體,終極 Shell 全面登場。退出終端會話從新登陸,開始感覺 zsh 的訓疾如風!
一、兼容 bash,原來使用 bash 的兄弟切換過來毫無壓力,該咋用咋用。
二、強大的歷史紀錄功能,輸入 grep 而後用上下箭頭能夠翻閱你執行的全部 grep 命令。
三、智能拼寫糾正,輸入gtep mactalk * -R,系統會提示:zsh: correct ‘gtep’ to ‘grep’ [nyae]? 比妹紙貼心吧,她們向來都是讓你猜的……
四、各類補全:路徑補全、命令補全,命令參數補全,插件內容補全等等。觸發補全只須要按一下或兩下 tab 鍵,補全項可使用 ctrl+n/p/f/b上下左右切換。好比你想殺掉 java 的進程,只須要輸入 kill java + tab鍵,若是隻有一個 java 進程,zsh 會自動替換爲進程的 pid,若是有多個則會出現選擇項供你選擇。ssh + 空格 + 兩個tab鍵,zsh會列出全部訪問過的主機和用戶名進行補全
五、智能跳轉,安裝了autojump以後,zsh 會自動記錄你訪問過的目錄,經過 j + 目錄名 能夠直接進行目錄跳轉,並且目錄名支持模糊匹配和自動補全,例如你訪問過hadoop-1.0.0目錄,輸入j hado 便可正確跳轉。j –stat 能夠看你的歷史路徑庫。
六、目錄瀏覽和跳轉:輸入 d,便可列出你在這個會話裏訪問的目錄列表,輸入列表前的序號,便可直接跳轉。
七、在當前目錄下輸入 .. 或 … ,或直接輸入當前目錄名均可以跳轉,你甚至再也不須要輸入 cd 命令了。
八、通配符搜索:ls -l **/*.sh,能夠遞歸顯示當前目錄下的 shell 文件,文件少時能夠代替 find,文件太多就歇菜了。
九、更強的別名:請參考配置一節。
十、插件支持:請參考插件一節。
……
看完這篇文章,你就知道,zsh一出,無人再與爭鋒!終極二字不是蓋的。
若是你是個正在使用 shell程序員,若是你依然準備使用 bash,那就去面壁和懺悔吧,別說你訂閱過 MacTalk!
感謝那位開發了 oh my zsh 的無聊程序員,他可能沒有所以收穫物質上的利益,可是他的代碼提高了無數程序員的效率,節省了大量的時間,咱們說,程序員改變世界!
MacTalk 寫的多了,朋友和家人都不太理解,這玩意賺不了錢爭不了名,寫來何用?我想,可以學習、編碼、寫做,並作出一點幫助別人的東西,總好過炒股炒房的價值吧,儘管人家比咱「富」多了……