Zsh 的設計哲學是「讓常用操作極簡,複雜操作可控」。本文精選 10 個高頻實戰場景,展示 Zsh 獨有的擴展通配符、上下文感知補全、智能糾錯、歷史修改重跑、右側提示符等殺手級功能,助你從 Bash 使用者進階為 Zsh 高手。
** 遞歸通配符 —— 橫掃子目錄# 列出所有 .pyc 檔 (含子目錄)
ls **/*.pyc
# foo.pyc bar.pyc lib/wibble.pyc
# 遞歸刪除
rm **/*.pyc
# 驗證
ls **/*.pyc
# (無輸出)
原理:** 等同 **/*,遞歸匹配任意深度目錄,無需 find 或 globstar 選項。
# 同時匹配 .py 和 .sh
ls *.py|sh # Zsh 原生支援 | 分隔
# 或
ls *. (py|sh) # 括號分組 (需 setopt EXTENDED_GLOB)
# 僅符號連結
ls -l *(@)
# 僅目錄
ls -ld *(/)
# 僅可執行檔
ls -l *(*)
# 僅大於 10MB 的一般檔案
ls -lh *(.L+10m)
# 組合:最近 1 小時修改的 .c 檔
ls -l *.c(mh-1)
修飾符速查:(@) 符號連結、(/) 目錄、(*) 可執行、(.) 一般檔、(r/w/x) 權限、(Lk/m/g) 大小、(mh/d/w) 時間。
man zsh
# 顯示菜單:zsh(1) zshall(1) zshbuiltins(1) zshcalsys(1) ...
# 選擇章節後直接開啟
python -
# 顯示:-B -b -c -d -E -h -i -m -O -Q -s -S -u -v -V -W -x -X --help --version ...
# 選項描述同步顯示
kill Dock
# 顯示:Dock(1234) Dock(5678) 等同 kill 1234 5678
man zsh
# 方向鍵在補全菜單中自由移動選擇,Enter 確認
pythn -V
# zsh: correct 'pythn' to 'python' [nyae]? y
# Python 2.7.1
# 選項:n(no) y(yes) a(abort) e(edit)
需 setopt correctall (已在配置指南中啟用)。
r 歷史修改重跑 —— 批量重命名神器touch foo.htm bar.htm
mv foo.htm foo.html
r foo=bar
# 自動展開為:mv bar.htm bar.html
# 執行後 bar.htm → bar.html
原理:r 重跑上一條歷史命令,支援 舊=新 字串替換,多重替換用空格分隔 r foo=bar htm=html。
RPROMPT) —— 邊角資訊不佔主提示符空間# 顯示當前時間 (HH:MM:SS)
RPROMPT="%*"
# 顯示 Git 狀態 (需 vcs_info)
autoload -Uz vcs_info
precmd() { vcs_info }
setopt prompt_subst
RPROMPT='${vcs_info_msg_0_}'
# 顯示返回碼 (非零時紅色)
RPROMPT='%(?.%F{green}✓.%F{red}✗ %?)%f'
# 組合:時間 + Git + 返回碼
RPROMPT='%* ${vcs_info_msg_0_} %(?.%F{green}✓.%F{red}✗ %?)%f'
# Debian/Ubuntu
apt-get install zsh
# Fedora/CentOS
dnf install zsh
# macOS (Homebrew)
brew install zsh
這 10 個技巧僅是 Zsh 功能冰山一角,配合 zsh-autosuggestions (灰色建議)、zsh-syntax-highlighting (語法高亮)、fzf (模糊歷史/檔案搜尋) 等外掛,可構建極致高效的終端工作流。建議逐一實操,內化為肌肉記憶。