Oh My Zsh 實用技巧:alias 設定、更新維護、讓設定活下去的習慣

安裝設定完,最後一關是——讓這些設定真正活下去。
不只是「能用」,是「換新電腦不用重來」「出差連到伺服器也順手」「三個月後還記得自己改了什麼」。
實用 alias
alias 是最直接提升效率的東西,每天重複的指令縮短成兩三個字母。
放在 ~/.zshrc 的任何地方,或是建一個獨立的 ~/.zsh_aliases 再在 .zshrc 裡 source 進來(後者比較好管理):
# ~/.zshrc 底部
[[ -f ~/.zsh_aliases ]] && source ~/.zsh_aliases# ~/.zsh_aliases
# --- 系統 ---
alias ll='ls -lahF'
alias ..='cd ..'
alias ...='cd ../..'
alias mkdir='mkdir -pv' # 自動建父目錄,順便顯示建了哪些
alias cp='cp -iv' # 複製前詢問、顯示過程
alias mv='mv -iv' # 移動前詢問、顯示過程
# --- Git ---
alias gs='git status'
alias ga='git add .'
alias gc='git commit -m'
alias gp='git push'
alias gl='git log --oneline --graph --decorate -20'
alias gd='git diff'
alias gco='git checkout'
alias gb='git branch'
# --- Docker ---
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
# --- Kubernetes ---
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
alias kgn='kubectl get nodes'
alias kl='kubectl logs -f'
alias kd='kubectl describe'
# --- 其他 ---
alias zshrc='${EDITOR:-code} ~/.zshrc' # 快速開設定檔
alias reload='source ~/.zshrc' # 快速重載設定
alias path='echo $PATH | tr : "\n"' # 把 PATH 拆行顯示,人比較看得懂
alias ip='curl -s ifconfig.me' # 查公網 IPgit 這塊如果裝了 OMZ 的 git 外掛,很多 alias 本來就有了——可以用 alias | grep git 確認,避免重複定義。
函數比 alias 強的情況
alias 只能做簡單替換,邏輯複雜一點就要用 function:
# 建目錄然後直接進去
mkcd() {
mkdir -p "$1" && cd "$1"
}
# 壓縮目錄
targz() {
tar -czf "${1%/}.tar.gz" "$1"
}
# 解壓縮(自動判斷格式)
extract() {
case $1 in
*.tar.gz) tar -xzf "$1" ;;
*.tar.bz2) tar -xjf "$1" ;;
*.zip) unzip "$1" ;;
*.gz) gunzip "$1" ;;
*) echo "不知道怎麼解:$1" ;;
esac
}
# git commit 快捷(不用每次加引號)
gcm() {
git commit -m "$*"
}gcm fix typo in readme 直接 commit,不用包引號。小事,但每天做很多次就有感。
Oh My Zsh 自身的維護指令
omz update # 更新 OMZ 本體
omz reload # 重載設定(等同 source ~/.zshrc)
omz version # 查目前版本第三方外掛(zsh-autosuggestions 等)不會跟著 omz update 更新,要自己進去 pull:
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && git pull
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && git pull
cd ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k && git pull或是寫成一個 function 一次更新所有東西:
omz-update-all() {
omz update
for d in ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/*/; do
[[ -d "$d/.git" ]] && echo "更新 $d" && git -C "$d" pull
done
for d in ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/*/; do
[[ -d "$d/.git" ]] && echo "更新 $d" && git -C "$d" pull
done
}加到 ~/.zshrc 或 ~/.zsh_aliases,之後 omz-update-all 一條指令搞定。
Dotfiles:讓設定跟著你走
裝了 Oh My Zsh、設定好 Powerlevel10k、調好 zsh-autosuggestions——這些設定全部都住在幾個檔案裡:
~/.zshrc~/.p10k.zsh~/.zsh_aliases${ZSH_CUSTOM}/plugins/底下的外掛${ZSH_CUSTOM}/themes/底下的主題
最簡單的保存方式是把這些設定檔存到 git repo(通常叫做 dotfiles),換機器的時候 clone 下來、跑一個 setup 腳本,全部恢復。
基本結構:
dotfiles/
├── zsh/
│ ├── .zshrc
│ ├── .zsh_aliases
│ └── .p10k.zsh
└── setup.sh
# setup.sh
#!/bin/bash
ln -sf ~/dotfiles/zsh/.zshrc ~/.zshrc
ln -sf ~/dotfiles/zsh/.zsh_aliases ~/.zsh_aliases
ln -sf ~/dotfiles/zsh/.p10k.zsh ~/.p10k.zsh
# 安裝 OMZ(如果還沒裝)
if [[ ! -d ~/.oh-my-zsh ]]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi
# clone 外掛
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions 2>/dev/null || true
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting 2>/dev/null || true
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k 2>/dev/null || true
echo "設定完成,跑 source ~/.zshrc"放到 GitHub 私人 repo,下次換電腦:
git clone git@github.com:你的帳號/dotfiles.git ~/dotfiles
bash ~/dotfiles/setup.sh從頭來一次的時間從兩小時壓到五分鐘。
讓 shell 速度保持在線
設定越加越多之後,shell 啟動速度要定期檢查:
# 測量啟動時間
time zsh -i -c exit
# 更詳細的 profiling(在 ~/.zshrc 最頂端加這行)
zmodload zsh/zprof
# ~/.zshrc 最底端加這行
zprof
# source ~/.zshrc 之後會看到每個部分花了多少時間找到拖後腿的東西之後,通常是某個沉重的外掛或是 nvm(Node Version Manager)的載入——這些可以改成 lazy loading,只有第一次用到的時候才載入。
這個系列到這裡就完整了。你現在有:
zsh-autosuggestions預測你要打什麼zsh-syntax-highlighting讓打錯字在按 Enter 前就被抓到- Powerlevel10k 告訴你現在在哪、git 狀態如何、指令跑了多久
- 一套 alias 讓重複的指令縮短到幾個字母
- dotfiles 確保這些設定不會因為換機器而消失
終端機用了這麼多年,讓它為你做事,不是每天從頭打。