【CLI】zsh調(diào)研(1)背景知識和安裝


參考文章

摘錄知識點(diǎn)

  • 想知道你的系統(tǒng)有幾種shell嘹朗,可以通過以下命令查看:

    cat /etc/shells  
    
    

    顯示如下:

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh  
  • 目前常用的 Linux 系統(tǒng)和 OS X 系統(tǒng)的默認(rèn) Shell 都是 bash翻翩,但是真正強(qiáng)大的 Shell 是深藏不露的 zsh, 這貨絕對是馬車中的跑車底挫,跑車中的飛行車虽抄,史稱『終極 Shell』,但是由于配置過于復(fù)雜艾杏,所以初期無人問津韧衣,很多人跑過來看看 zsh 的配置指南,什么都不說轉(zhuǎn)身就走了购桑。直到有一天,國外有個(gè)窮極無聊的程序員開發(fā)出了一個(gè)能夠讓你快速上手的zsh項(xiàng)目氏淑,叫做「oh my zsh」勃蜘,Github 網(wǎng)址是:https://github.com/robbyrussell/oh-my-zsh。這玩意就像「X天教你學(xué)會 C++」系列假残,可以讓你神功速成缭贡,而且是真的。
  • 這里有個(gè) youtube 上的視頻辉懒,短短 4 分鐘就已經(jīng)拋出了幾十個(gè)讓 bash 用戶切換到 zsh 中的理由阳惹。
  • zsh的優(yōu)勢:
    • zsh 的補(bǔ)全模式更方便
      zsh 中按兩下 tab 鍵可以觸發(fā) zsh 的補(bǔ)全,所有待補(bǔ)全項(xiàng)都可以通過鍵盤方向鍵或者 <Ctrl-n/p/f/b> 來選擇眶俩。

      tab鍵補(bǔ)全

    • zsh 支持命令選項(xiàng)補(bǔ)全

      zsh 除了支持目錄的補(bǔ)全莹汤,還支持命令選項(xiàng)的補(bǔ)全,例如 ls -<TAB><TAB> 會直接列出所有 ls 的參數(shù)颠印,再也不會出現(xiàn)一個(gè)命令打到一半纲岭,忘記參數(shù)導(dǎo)致重開一個(gè) terminal man 一把。
      命令選項(xiàng)補(bǔ)全
    • zsh 支持命令參數(shù)補(bǔ)全

      以前想 kill 掉一個(gè)進(jìn)程线罕,我的做法是 ps aux | grep "進(jìn)程名" 然后記下 id止潮,再 kill id。在 zsh 下钞楼,只需要 kill 進(jìn)程名<TAB>喇闸,zsh 就會自動補(bǔ)全進(jìn)程的 pid。
      命令參數(shù)補(bǔ)全
      其余我常用的補(bǔ)全還有:
      • ssh <TAB><TAB> 時(shí) zsh 會自動列出你訪問過的主機(jī)和用戶名來補(bǔ)全 ssh 的參數(shù);
      • brew install <TAB><TAB> 來補(bǔ)全軟件包名询件,除了 homebrew 以外燃乍,同樣支持 port/apt-get 等其他包管理器。
    • zsh 支持更加聰明的目錄補(bǔ)全
      以前比如想進(jìn)入一個(gè)比較深的目錄雳殊,比如 /Users/pw/workspace/project/src/main/webapps/static/js橘沥,就得在 bash 下面打半天,不停的 tab 去補(bǔ)全一個(gè)正確的路徑出來夯秃。在 zsh 下座咆,只需要輸入每個(gè)路徑的頭字母然后 tab 一下: cd /u/p/w/p/s/m/w/s/j<TAB>

    • zsh 強(qiáng)大的快速目錄切換
      以前最苦逼的事情莫過于頻繁在兩個(gè)工作目錄下切換痢艺,總要打一長串 cd 路徑。也嘗試過 popd 和 pushd 來解決這個(gè)問題介陶,但往往是目錄已經(jīng)切換了才想起來沒用 pushd堤舒。而 zsh 會記住你每一次切換的路徑,然后通過 1 來切換到你上一次訪問的路徑哺呜,2 切換到上上次……一直到 9舌缤,還可以通過 d 查看目錄訪問歷史。

      zsh 還可以配合 autojump 一起使用某残,autojump 會記錄下每一個(gè)你訪問過的目錄国撵,然后通過 j 來快速跳轉(zhuǎn)。

    • zsh 支持全局 alias 和后綴名 alias
      bash 的 alias 只能做命令的縮寫玻墅,而 zsh 更進(jìn)一步介牙,使 alias 可以縮寫命令的一部分,例如參數(shù)或環(huán)境變量設(shè)置澳厢。

1$ alias -s log=less
2$ ~/package/tomcat/log/catalina.log # 相當(dāng)于 less ~/package/tomcat/log/catalina.log
3$ alias -g PR=http_proxy=127.0.0.1:8087
4$ PR curl https://twitter.com # 相當(dāng)于 http_proxy=127.0.0.1:8087 curl https://twitter.  
*   zsh 有著豐富多彩的命令行提示符  

bash 下通過設(shè)置 PS1 已經(jīng)可以實(shí)現(xiàn)很豐富的提示符了环础,而 zsh 更進(jìn)一步,可以實(shí)現(xiàn)諸如多行提示符剩拢、提示符右對齊等功能线得。oh-my-zsh 配置文件中提供了非常豐富的提示符 theme 供選擇,我使用的是 gentoo 主題徐伐,比較簡潔贯钩,還可以顯示當(dāng)前 git 倉庫的狀態(tài)。 * zsh 有更多優(yōu)雅的語法 例如修改 PATH呵晨,bash 下設(shè)置PATH 要求所有路徑都要寫在一行里魏保,目錄多了以后看起來就很難看。zsh 支持更加符合程序員審美觀的設(shè)置方式摸屠。

1path=(
2   ~/bin
3   $path
4   ~/package/smartsprites/bin
5)  
  • zsh幾個(gè)必備插件
    • autojump
      幫助快速目錄跳轉(zhuǎn)的小工具谓罗。首先要安裝 autojump,然后在 .zshrc 中開啟 autojump 插件季二。它會記錄下來每個(gè)你進(jìn)入過的目錄檩咱,隨后通過 j 目錄名稱的一部分就可快速跳轉(zhuǎn)到該目錄。Youtube視頻介紹胯舷。

    • git
      Git 命令補(bǔ)全刻蚯,除了可以補(bǔ)全 git 的子命令、命令開關(guān)等常規(guī)補(bǔ)全項(xiàng)以外桑嘶,還可以補(bǔ)全分支名等內(nèi)容炊汹,用 git 必開的插件。

    • osx
      提供一些與 Mac OSX 系統(tǒng)交互的命令逃顶,比如:

      • man-preview 通過 preview 程序查看一個(gè)命令的手冊讨便,例如 man-preview git
      • quick-look 快速預(yù)覽文件
      • pfd 返回當(dāng)前 finder 打開的文件夾的路徑
      • cdf 切換到當(dāng)前 finder 所在的目錄

切換或安裝zsh

Mac自帶zsh,所以充甚,我們可以把終端默認(rèn)的bash改成zsh,切換后重啟終端或者打開一個(gè)新的終端標(biāo)簽霸褒。

chsh -s /bin/zsh  

系統(tǒng)的zsh可能不是最新的版本伴找,想換成最新zsh,可按下面的總結(jié)废菱。當(dāng)然不更新沒有絲毫問題技矮,實(shí)際上我在折騰zsh的時(shí)候,把終端和iTerm2搞得都不能用了殊轴。

可以通過以下命令來判斷當(dāng)前zsh版本:

echo $ZSH_VERSION  

可以通過以下命令來知悉一軟件的信息衰倦,其中包括版本信息,我們拿curl舉例:

brew info curl  

如下圖:

curl信息

第一個(gè)紅框中是我輸入的命令,第二個(gè)紅框說明了curl有一個(gè)7.40.0的穩(wěn)定版旁理,第三個(gè)紅框說明我還沒有安裝curl耿币,后面還有一些信息,比如打叉的說明你安裝此軟件還缺乏什么韧拒,大對勾的自然是你已然擁有了的。

所以十性,你可以通過brew info zsh來了解zsh最新版的情況叛溢。

以上兩個(gè)命令可以作為知識的擴(kuò)展,來輔助你認(rèn)識zsh,可用可不用劲适,最關(guān)鍵的是通過homebrew安裝zsh

brew install zsh  

如此楷掉,你就擁有了最新版的zsh,默認(rèn)存在/usr/local/bin/zsh路徑下。但要用上它霞势,還差兩個(gè)步驟烹植。

1、可能你已經(jīng)發(fā)現(xiàn)愕贡,系統(tǒng)的各種shell都在/etc/shells/“注冊”了草雕,所以,我們新安裝的zsh固以,也要在此注冊墩虹。即需要用sudo(super user do)編輯 /etc/shells,在其中 加入一行 /usr/local/bin/zsh。

在此憨琳,我用vim來編輯诫钓,如下圖

編輯shells

敲擊return后,輸入密碼篙螟,再敲return菌湃,密碼正確后,進(jìn)入此文稿遍略,如下圖(我的文稿中惧所,已經(jīng)“注冊”了)

shells文稿

接下來是vim的一些操作骤坐,摁“i”進(jìn)入插入模式,利用光標(biāo)纯路,將“/usr/local/bin/zsh”路徑輸入其中(我放在了最后)或油,然后摁“esc”結(jié)束插入模式,摁“:wq”保存退出,這樣就“注冊”了驰唬。

2顶岸、切換到最新版的zsh

很簡單,輸入命令

chsh -s /usr/local/bin/zsh  

重啟終端或新打開一個(gè)標(biāo)簽叫编,可以通過echo $ZSH-VERSION查看版本的變化辖佣,或者which zsh查看路徑的變化,來判斷我們是否切換成功了搓逾。

時(shí)間緊卷谈,或者對切換到最新版zsh沒興趣的同學(xué),可以從開始的時(shí)候霞篡,直接用命令chsh -s /bin/zsh從系統(tǒng)的bash切換到系統(tǒng)的zsh,繞過這些個(gè)細(xì)碎的步驟世蔗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朗兵,隨后出現(xiàn)的幾起案子污淋,更是在濱河造成了極大的恐慌,老刑警劉巖余掖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寸爆,死亡現(xiàn)場離奇詭異,居然都是意外死亡盐欺,警方通過查閱死者的電腦和手機(jī)赁豆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冗美,“玉大人魔种,你說我怎么就攤上這事《昭茫” “怎么了务嫡?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長漆改。 經(jīng)常有香客問我心铃,道長,這世上最難降的妖魔是什么挫剑? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任去扣,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愉棱。我一直安慰自己唆铐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布奔滑。 她就那樣靜靜地躺著艾岂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朋其。 梳的紋絲不亂的頭發(fā)上王浴,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音梅猿,去河邊找鬼氓辣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛袱蚓,可吹牛的內(nèi)容都是我干的钞啸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼喇潘,長吁一口氣:“原來是場噩夢啊……” “哼体斩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颖低,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤硕勿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后枫甲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扼褪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年想幻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片话浇。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脏毯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幔崖,到底是詐尸還是另有隱情食店,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布赏寇,位于F島的核電站吉嫩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嗅定。R本人自食惡果不足惜自娩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渠退。 院中可真熱鬧忙迁,春花似錦脐彩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恰梢,卻和暖如春佛南,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背删豺。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工共虑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呀页。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓妈拌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蓬蝶。 傳聞我的和親對象是個(gè)殘疾皇子尘分,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容