標籤:

Shell的唯一選擇--zsh

有些同學可能對Shell不太熟悉。借用池建強的一個解釋:簡單的說,Shell是Linux/Unix的一個外殼。它負責外界與Linux內核的交互,接收用戶或其他應用程序的命令,然後把這些命令轉化成內核能理解的語言,傳給內核,內核是真正幹活的,幹完之後再把結果返回用戶或應用程序。

Linux/Unix提供了很多種Shell,輸入以下的命令查看有哪些Shell:

cat /etc/shells

Linux的默認 Shell 都是 bash,既然如此,那我今天為什麼要說zsh呢?因為zsh搭配上"oh my zsh"真的好用到爆啊!"oh my zsh"的Github網址點我點我!。

那麼如何安裝、配置和使用 zsh(我用的是Ubuntu)

1. 安裝zsh

sudo apt-get install zsh

2. 安裝oh my zsh

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

3. 配置zsh

zsh的配置在當前用戶目錄的.zshrc里。oh my zsh 在安裝時已經自動讀取當前的環境變數並進行了設置,你可以繼續追加其他環境變數。

  • 換主題

    打開~/.zshrc。oh my zsh提供了數十種主題,相關文件在~/.oh-my-zsh/themes下,你可以隨意選擇,我採用的是ys主題。

    在~/.zshrc文件中找到

    ZSH_THEME="ys"

    更改成你想要的主題就好了。

  • 插件

    oh my zsh里提供了非常多的插件,相關文件在~/.oh-my-zsh/plugins文件夾下,默認有100多種,我們可以根據自己的實際需要載入特定的插件。插件也是在~/.zshrc里配置,找到plugins關鍵字,你就可以載入自己的插件了,系統默認載入 git ,你可以在後面追加內容。

    plugins=(git autojump mvn last-working-dir)

    下面簡單介紹一下我用的這幾個插件:

    • 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

    • autojump

      autojump可以說是zsh必備插件,有點雙劍合璧的意思。安裝了autojump之後,zsh會自動記錄你訪問過的目錄,通過j+目錄就可以直接進行目錄跳轉,而且目錄名支持模糊匹配和自動補全,例如你訪問過~/workspace目錄,輸入j wor即可正確跳轉,如圖。j –stat 可以看你的歷史路徑庫。

    • last-working-dir

      last-working-dir 插件,可以記錄上一次退出Shell時的所在路徑,並且在下一次啟動Shell時自動恢復到退出時所在的路徑。這一切不需要進行任何操作,全部都是自動完成的。
  • 命令糾錯

    如圖,輸入

    sudp apt-get install

    nyae會提示zsh: correct sudp to sudo [nyae]?接下來直接按y/n就行了。真是太貼心了有木有

    那如何開啟nyae提示呢?

    打開~/.zshrc,找到配置項更改為「true」即可

    # Uncomment the following line to enable command auto-correction.ENABLE_CORRECTION="true"

4. 指定zsh為默認Shell

輸入命令

chsh -s /bin/zsh

5. zsh操作

  • 輸入 grep 然後用上下箭頭可以翻閱你執行過的所有 grep 命令
  • tab補全:路徑補全、命令補全,命令參數補全,插件內容補全等等。觸發補全只需要按一下或兩下 tab 鍵,補全項可以使用 ctrl+n/p/f/b上下左右切換。
  • 目錄瀏覽和跳轉:輸入 d,即可列出你在這個會話里訪問的目錄列表,輸入列表前的序號,即可直接跳轉

  • 在當前目錄下輸入 .. 或 … ,或直接輸入當前目錄名都可以跳轉,不再需要輸入 cd 命令了。

推薦閱讀:

tmux設置zsh的問題?
一些 alias
Zsh 開發指南(第十三篇 管道和重定向)
Zsh 開發指南(第十九篇 腳本實例講解)
Zsh 開發指南(第九篇 函數和腳本)

TAG:zsh | Linux | Ubuntu |