使用zsh的十大優點

來源:互聯網
上載者:User

標籤:zsh   oh-my-zsh   

優點1:完全相容bash,之前bash下的使用習慣,shell指令碼都可以完全相容。


優點2:更強大的tab補全,當你切換目錄敲兩下tab,他可以列出目前的目錄下面的所有目錄,並且可以使用鍵盤上下左右鍵來選擇要進入的目錄。


650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7F/20/wKiom1cUgGmhs7sOAAAh3Xd7UZg533.png" style="float:none;" title="cd.png" alt="wKiom1cUgGmhs7sOAAAh3Xd7UZg533.png" />



優點3:更智能的切換目錄,比如你要進入一個很深的目錄,like this /var/log/nginx/error/lastyear/may/first/monday, 用zsh可以這樣輸入cd /v/l/n/e/l/m/f/m,然後按tab即可補全整個路徑。或者你實現知道目前的目錄名稱,可以直接輸入目錄,即可進去目錄。bash下cd - 可以切換到剛才進入的目錄,在zsh下可以記錄最近進去過的10個目錄,只需要輸入d,然後看到對應的0-9的目錄,輸入cd -數字,即可進入對應的目錄。


650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7F/1E/wKioL1cUgSfDg4sUAAAjClJsyi4213.png" title="tab.png" style="float:none;" alt="wKioL1cUgSfDg4sUAAAjClJsyi4213.png" />


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/7F/1F/wKioL1cUinXwtepAAAAoRhlBg14007.png" title="cdd.png" alt="wKioL1cUinXwtepAAAAoRhlBg14007.png" />


優點4:命令選項補齊,比如輸入yum,然後按tab,即可顯示出yum都有哪些命令選項。


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7F/1E/wKioL1cUgSigwyP4AABOp6DT8pE635.png" title="yum.png" style="float:none;" alt="wKioL1cUgSigwyP4AABOp6DT8pE635.png" />


優點5:命令參數補齊,比如要kill一個進程,直接輸入kill 進程名,會自動顯示出進程的process id,

如果用ssh,則會輸出最近用ssh 串連過的主機名稱,配合.zshrc還可以實現自訂ping命令自動補齊的命令參數。

zstyle ‘:completion:*:ping:*‘ hosts 192.168.1.{1,50,51,100,101} www.google.com


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7F/20/wKiom1cUgGrxcQXjAAAqL2p02oY250.png" title="kill.png" style="float:none;" alt="wKiom1cUgGrxcQXjAAAqL2p02oY250.png" />


優點6:大小寫字母自動校正,比如我們要cat一下README.txt,直接輸入cat readme.txt TAB,之後zsh就會把小寫readme改成大寫的。這個功能很好用哦。



優點7:有著豐富多彩的主題,如果你使用我的指令碼安裝oh-my-zsh的項目的話,在~/.oh-my-zsh/themes裡會找到多達142個主題,看中哪個主題直接在~/.zshrc 裡面更改:

ZSH_THEME="ys"

想要看其他的主題,可以看官網的這個地址:

https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes

或者知乎上的這個討論地址:

https://www.zhihu.com/question/33277508

然後我用的是這個主題:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/7F/1E/wKioL1cUgSiw0ycEAAAdRt7g_Ls590.png" title="theme.png" style="float:none;" alt="wKioL1cUgSiw0ycEAAAdRt7g_Ls590.png" />


優點8:更強大的alias命令,比如下面命令,當你在zsh環境下輸入hello.py即可直接用vim開啟檔案編輯,一個tgz的檔案即可自動解壓縮。

alias -s py=vimalias -s html=vimalias -s tgz=‘tar zxvf‘


優點9:智能命令錯誤校正,比如輸入apt-gte install somefile,斷行符號後,zsh會提示你是否糾正apt-gte 為apt-get?輸入y,後即是正確命令執行,加上zshrc的profile的設定,按兩下ESC,即可在命令的前面加上sudo。

##在命令前插入 sudo {{{#定義功能sudo-command-line() {[[ -z $BUFFER ]] && zle up-history[[ $BUFFER != sudo\ * ]] && BUFFER="sudo $BUFFER"zle end-of-line                 #游標移動到行末}zle -N sudo-command-line#定義快速鍵為: [Esc] [Esc]bindkey "\e\e" sudo-command-line#}}}

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7F/1E/wKioL1cUgSfD48mxAAAsbZ1dM6U050.png" title="sudo.png" style="float:none;" alt="wKioL1cUgSfD48mxAAAsbZ1dM6U050.png" />


優點10:

最最強大的優點是可以整合各種類型的外掛程式,比如切換目錄的可以繼承autojump,想跳轉到哪裡,直接j 加目錄名稱,真的非常強大,非常便利,這個bash也可以使用。比如想要去nginx目錄,可以直接輸入j nginx,他會搜尋使用率最高的nginx的路徑,如果想要去/var/log/下的nginx呢,直接輸入j v ng,效果如下:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7F/1E/wKioL1cUgSjjDNTTAAAiBvyCs-g626.png" title="j.png" style="float:none;" alt="wKioL1cUgSjjDNTTAAAiBvyCs-g626.png" />


在比如git外掛程式,當你在一個git 倉庫的時候你的zsh PS1是這樣顯示的,


650) this.width=650;" src="http://s2.51cto.com/wyfs02/M02/7F/20/wKiom1cUggixsF0eAAAIXwyUgTI071.png" title="git.png" alt="wKiom1cUggixsF0eAAAIXwyUgTI071.png" />

會面會跟git 是master 還是 branch,然後的o 表示當前沒有modify,也是最新的,比如我們更改一個檔案,立馬變成如下:


650) this.width=650;" src="http://s1.51cto.com/wyfs02/M02/7F/20/wKiom1cUgm7hFuNoAAAI_w3rM9s063.png" title="git 2.png" alt="wKiom1cUgm7hFuNoAAAI_w3rM9s063.png" />

後面的o變成了x,代表你的本地倉庫有更新。

在比如說你在你的倉庫裡新添加了幾個檔案,當你使用git add的時候多按幾次TAB,你的新添加的檔案就都補上了。


還有一個比較厲害的外掛程式是history-substring-search, 強大到令人髮指,首先你輸入的每條命令他會給你記錄下時間,並且在你的home目錄建立.zsh_history/相對應的目錄,並記錄你在目前的目錄下用過的命令。

比如輸入ansible,按上下箭頭,即可搜尋之前使用過的包括ansible的命令,而且是完全符合,怎麼說呢,就是比如說輸入“ansi” 他就會匹配命令當中包含“ansi”的,如果輸入“ansible all” 他就會匹配完全包含“ansible all”的命令,強大的地方在於當你輸入ansible 上箭頭比如找到這條命令ansible all -m shell -a ‘update‘,你可以左右游標符到m,然後上下翻命令,這時候搜尋的就是"ansible all -"。也可以用histall | grep ansible的方式:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7F/21/wKiom1cUhXegjuZrAADWK4vHGH8988.png" title="hist.png" alt="wKiom1cUhXegjuZrAADWK4vHGH8988.png" />


zsh還有很多強大的plugin值得去研究一下,比如整合docker的,aws的,go,python等等。還有大部分不習慣centos7的systemctl命令的,有個systemd的外掛程式值得一用。

# root at shanker in ~/.oh-my-zsh/plugins/systemd on git:master o [7:17:36]# less systemd.plugin.zsh user_commands=(  list-units is-active status show help list-unit-files  is-enabled list-jobs show-environment cat)sudo_commands=(  start stop reload restart try-restart isolate kill  reset-failed enable disable reenable preset mask unmask  link load cancel set-environment unset-environment  edit)for c in $user_commands; do; alias sc-$c="systemctl $c"; donefor c in $sudo_commands; do; alias sc-$c="sudo systemctl $c"; donealias sc-enable-now="sc-enable --now"alias sc-disable-now="sc-disable --now"alias sc-mask-now="sc-mask --now"


如果大家覺得好用,可以用我寫的自動化安裝指令碼,只支援centos like和ubuntu like系統哦。

https://github.com/sangrealest/shell/blob/master/init_zsh.sh

或者參考這篇文章:

http://shanker.blog.51cto.com/1189689/1737213



歡迎補充!



本文出自 “天涯海閣” 部落格,請務必保留此出處http://shanker.blog.51cto.com/1189689/1765036

使用zsh的十大優點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.