Powerful shell in Linux / Unix : Zsh
以下節錄自維基百科
Z Shell(Zsh) 是一種Unix shell,它可以用作為互動式的登入shell,也是一種強大的shell指令碼命令直譯器。Zsh可以認為是一種Bourne shell的擴充,帶有數量龐大的改進,包括一些bash、ksh、tcsh的功能。
Zsh具有以下主要功能:
1 開箱即用、可程式化的命令列補全功能可以幫助用戶輸入各種參數以及選項。
2 在用戶啟動的所有shell中共享命令歷史。
3 通過擴充的檔案萬用字元,可以不利用外部命令達到find命令一般展開檔案名。
4 改進的變數與陣列處理。
5 在緩衝區中編輯多行命令。
6 多種相容模式,例如使用/bin/sh執行時可以偽裝成Bourne shell。
7 可以客製呈現形式的提示符;包括在屏幕右端顯示資訊,並在鍵入長命令時自動隱藏。
8 可載入的模組,提供其他各種支援:完整的TCP與Unix域通訊端控制,FTP用戶端與擴充過的數學函式。
9 完全可客製化。
一個叫做「Oh My Zsh」的用戶社群收錄了Zsh的第三方擴充。
安裝
sudo apt-get install zsh
取代 bash,讓默認使用 zsh
chsh -s /bin/zsh
chsh -s `which zsh`
安裝 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
配置主题
可以通過修改 ~/.zshrc
中的環境變數 ZSH_THEME 來完成
oh-my-zsh 收集了大量的主題,存在 ~/.oh-my-zsh/theme
當然也可以額外下載主題
底下使用 Bullet Train(https://github.com/caiogondim/bullet-train.zsh)
首先下載主題 http://raw.github.com/caiogondim/bullet-train-oh-my-zsh-theme/master/bullet-train.zsh-theme
並存放到 $ZSH_CUSTOM/themes/
底下
然後到 ~/.zshrc
中修改環境變數
ZSH_THEME="bullet-train"
安裝字型
Bullet Train 需要額外的字型才能顯示特殊的字元和圖案。
sudo apt-get install powerline
sudo apt-get install fonts-powerline
配置插件
oh-my-zsh wiki 裡面有介紹了一下每個內建外掛是在做什麼,只要在設定檔加一些字就可以使用了,預設只會幫你啟用 git
。
如果想裝更多的,在awesome-zsh-plugins可以找到
這邊建議可以裝 zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
和 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
然後到 ~/.zshrc
中修改環境變數
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
修改完 ~/.zshrc
記得要
source ~/.zshrc
另一個主題推薦
首先下載主題 https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/half-life.zsh-theme
並存放到 $ZSH_CUSTOM/themes/
底下
然後到 ~/.zshrc
中修改環境變數
ZSH_THEME="half-life"
修改配置
PROMPT=$'%{$purple%}%n%{$reset_color%} in %{$limegreen%}%~%{$reset_color%}$(ruby_prompt_info " with%{$fg[red]%} " v g "%{$reset_color%}")$vcs_info_msg_0_%{$orange%}%{$reset_color%} at %{$hotpink%}%* %{$orange%}λ%{$reset_color%} '