有顏色的shell:zsh 簡易安裝與使用心得

為何要使用 zsh?

先上結果

之前在看一些 it 邦幫忙的文章的時候,就有發現有不少人的 shell 色彩繽紛

而且重點是他們的 GIF 圖的範例裡面,有時候指令就莫名其妙的打完了 (不是使用 Tab)

於是呢,就想說也來練習看看,但他好像也不是什麼新東西了

單純做個筆記分享一下

2022/6/19 更新 Ubuntu Desktop 22.04 安裝

基本上跟下面的步驟差不多,不過 zsh 的部分就不用再抓原始碼編譯了,可以直接採用 apt install 來安裝

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# ubuntu desktop 22.04 最小化安裝
sudo apt update
sudo apt install openssh-server git
# oh-my-zsh
sudo apt install zsh # zsh 5.8.1
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
#
# p10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

# 安裝 you-should-use
git clone https://github.com/MichaelAquilina/zsh-you-should-use.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/you-should-use
# 在 ~/.zshrc 的 plugin 中新增 you-should-use

# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 在 ~/.zshrc 的 plugin 中新增 zsh-autosuggestions

# zsh-completions
# 有點不太確定是不是已經預設好了,我把它刪掉之後還是有 completions 的功能
# git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions

# 下載我自己的 config , 這段可跳過
# 2022.6 還是可以直接使用 ~
git clone https://github.com/RayLin9981/config.git
cp config/.p10k.zsh .
cp config/.zshrc .
#

安裝程式碼紀錄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# centos 7 2021.11 測試
# 使用 centos 7.4 最小版安裝
# 確保 zsh 版本高於 5.1 ( centos 7 預設的 repo 的只有5.0.1的樣子)
# 建議 sudo 設定 NOPASSWD 比較輕鬆安裝
sudo yum update -y
sudo yum install -y git make ncurses-devel gcc autoconf man yodl wget
# 去下載 zsh-5.7.1 的版本來編譯
git clone -b zsh-5.7.1 https://github.com/zsh-users/zsh.git /tmp/zsh
cd /tmp/zsh
./Util/preconfig
./configure
sudo make -j 20 install
cd ~

# 安裝 ohmyzsh
wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
yes | sh install.sh

# p10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
#在 ~./zshrc 中加入 ZSH_THEME="powerlevel10k/powerlevel10k"
# 接下來重新載入 zsh 會進入設定模式,可依據自己的喜好選擇,後生成 ~/.p10kzsh

# 安裝 you-should-use
git clone https://github.com/MichaelAquilina/zsh-you-should-use.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/you-should-use
# 在 ~/.zshrc 的 plugin 中新增 you-should-use

# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 在 ~/.zshrc 的 plugin 中新增 zsh-autosuggestions

#zsh-completions
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions

# 下載我自己的 config , 這段可跳過
git clone https://github.com/RayLin9981/config.git
cp config/.p10k.zsh .
cp config/.zshrc .

可以看到有安裝了 zsh , ohmyzsh,powerlevel10k, zsh-autosuggestions , zsh-completions 等等,其實並不多,但我覺得用起來跟 bash 比起來還是方便很多

Oh My ZSH!

這個開源程式主要是用來管理 zsh 的一些 plugins , 等等要安裝的 plugins 都會丟到 ~/.oh-my-zsh 的目錄裡面

Oh My ZSH 似乎是導致 zsh 開始變紅的一個因素之一,有看過一篇文是說 Oh My ZSH 出來之後在 google 搜尋上 zsh 的搜尋頻率提升很多 (離題了)

並且可以到他的官方網站去挑選主題來用,主題多到用滾輪滑也要滑很久才滑的完

但我的主題是使用 powerlevel10k

powerlevel10k

主要讓畫面變得鮮豔的道具~

在第一次下載時,到 在 ~./zshrc 中加入 ZSH_THEME="powerlevel10k/powerlevel10k" 後進入 zsh

就會有一個互動介面,可以依循他的步驟挑選自己喜歡的模樣

結束後若想再重新設定一次 ,可輸入 p10k configure 再進入互動介面

若是想要更客製化,可以去編輯 ~/.p10k.zsh 這個檔案,裡面有非常多的東西可以修改

e.g. POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS 這個變數顧名思義就是要控制畫面右方顯示的東西,以我的畫面為例,我有新增了 ip 這個功能,就可以看到目前主要的 interface 的 IP ,省去我每次在多台電腦切來切去的時候都會忘記 IP 是多少

能客製化的東西非常多,也可以監控 CPU,memory 等系統資源,也可以自己定義圖示 (就不用顯示醜醜的 CPU 三個字),不過我就沒有多加研究,這個可以到網路上找別人的範本來改

you-should-use

下載完之後,到 ~/.zshrcplugins 新增 you-should-use (用空白隔開,或是一行一行的也可以)

那這個套件呢,主要是搭配上 Linuxalias 功能,非常實用

因為在 ~/.zshrc 中的 plugins 有新增指令的話,他就會幫忙產生很多好用的 ailas,以我的檔案來說:

1
2
3
4
plugins=(git you-should-use zsh-autosuggestions zsh-completions  kubectl ) # 請注意 kubectl 這行

alias | grep kubectl | wc -l
94

他自動幫我設定這些,就算很好用也根本記不住,但是 you should use 就會在我執行的時候告訴我應該要用有設定的 ailas ,被多提醒幾次之後要不記住也難啦~

所以上面的指令kubectl apply -f ~/test 就可以簡化成 kaf ~/test 輕鬆又自在

zsh-autosuggestions & zsh-completion

zsh-completion 這個就是跟 bash-completion 差不多的功能,只要拔掉 Tab 就會立刻喪失能力的我,跳到 zsh 來也是立刻就先把這個準備好了

簡單說一下,他可以跟 kubectl (當然指令大多數都可以) 互動,比如我打 kubectl get pods -n [Tab] 的時候,他就會顯示 -n 能輸入什麼參數 (也就是我目前環境內的 namespace),不裝他的話真的一堆指令都記不住了 XD

zsh-autosuggestions 也是很好用的一個 plugins , 他會依據你曾經輸入過的指令給你建議 (用比較淺的顏色) ,如果那是你要的就直接按 方向鍵的右鍵 ,他就會自動幫你補全

預設是只有去追蹤 history ,但我覺得 completion 的功能也很好用,所以就有補上去

可以到 .oh-my-zsh/custom/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 裡面的 ZSH_AUTOSUGGEST_STRATEGY=(history completion ) 做這樣的調整

總結

以現在一個月左右學習 kubernetes 用起來,zsh 還蠻舒服的,善用這些 plugins 的確可以減短打很多字的時間呢~

這篇文章比我想像中的還晚生出來 XD” ,接下來會繼續加把勁的~~

參考資料

zsh安裝主要參考文章

改變windows 編碼,不然會看不到 powerlevel 的字型設定

p10k安裝字型等

VMware player 開機順序調整

作者

林禹志 RayLin

發表於

2021-11-15

更新於

2022-06-19

許可協議

評論