Bash/Zsh 命令列是 Linux 使用者最高頻互動介面。掌握 Tab 補全、Ctrl+R 反向搜尋、Alt+. 取用上一參數、fc 編輯歷史指令、bind 自訂快捷鍵,可將操作效率提升數倍。本文系統整理 40+ 實用技巧。

| 按鍵 | 功能 |
|---|---|
| Tab | 補全路徑/指令/變數/用戶/主機名 |
| Tab Tab | 列出所有候選 |
| Alt+? | 同 Tab Tab |
| Alt+* | 一次插入所有候選 |
| Alt+$ | 補全變數名 |
| Alt+~ | 補全用戶名 |
| Alt+@ | 補全主機名 (/etc/hosts) |
Ctrl+R 反向遞增搜尋 (輸入關鍵字即時過濾)
Ctrl+S 向前遞增搜尋 (需先 stty -ixon)
Alt+P 非遞增搜尋 (輸入完按 Enter)
Alt+N 向前非遞增搜尋
Ctrl+G 取消搜尋
Ctrl+J 複製搜尋結果到命令列 (不執行)
!! 重複上一條指令
!n 執行第 n 條歷史
!string 執行最近以 string 開頭的指令
!?string 執行最近包含 string 的指令
Alt+. 插入上一條指令的最後一個參數 (神技)
Alt+_ 同 Alt+.
Ctrl+A 移至行首
Ctrl+E 移至行尾
Ctrl+U 刪除游標至行首
Ctrl+K 刪除游標至行尾
Ctrl+W 刪除前一個單字
Alt+D 刪除下一個單字
Ctrl+Y 粘貼 (yank) 最後刪除內容
Alt+Y 循環粘貼更早刪除內容
Ctrl+L 清屏 (同 clear)
Ctrl+T 交換游標前兩字元
Alt+T 交換游標前兩單字
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoredups:erasedups
HISTTIMEFORMAT="%F %T "
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
alias ll='ls -lh --color=auto'
alias grep='grep --color=auto'
alias ..='cd ..'
alias ...='cd ../..'
mkcd() { mkdir -p "$1" && cd "$1"; } # 建立並進入目錄
extract() { # 通用解壓縮
if [ -f "$1" ]; then
case "$1" in
*.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;;
*.zip) unzip "$1" ;;
*) echo "Unknown format" ;;
esac
fi
}
將上述技巧內化為肌肉記憶,命令列將成為你最得力的生產力工具。