透過 Readline 庫配置檔 /etc/inputrc 或 ~/.inputrc,可將任意 Shell 命令、組合鍵、甚至帶參數的動態指令綁定至鍵盤快捷鍵,極大提升終端操作效率。本文系統介紹綁定語法、ASCII 碼獲取、游標/歷史/編輯導航鍵重映射、服務管理/應用啟動參數化熱鍵、配置管理最佳實務。

# /etc/inputrc (全域) 或 ~/.inputrc (用戶)
# 格式: "KEYSEQ": "MACRO"
# KEYSEQ 可用 \\C- (Ctrl), \\M- (Alt), \\e (ESC), 字面字符
# MACRO 為要輸入的字串,\\C-M 代表 Enter
$ cat -v
# 按下組合鍵,顯示如 ^[ [A (Up), ^G (Ctrl+G), ^[p (Alt+P)
# Ctrl+V 後按組合鍵可插入原始轉義碼
# ~/.inputrc
# Alt+H/J/K/L ←↓↑→ (替代方向鍵)
"\eh": "\e[D" # Left
"\el": "\e[C" # Right
"\ej": "\e[B" # Down (歷史下一條)
"\ek": "\e[A" # Up (歷史上一條)
# Alt+I/O 刪除字符 (Backspace/Delete)
"\ei": "\C-?" # Backspace
"\eo": "\e[3~" # Delete
# Alt+N/M 刪除單詞
"\en": "\e\C-?" # backward-kill-word
"\em": "\ed" # kill-word
# Alt+A/E 刪除至行首/行尾
"\ea": "\e\C-?\e\C-?\e\C-?\e\C-?\e\C-?\e\C-?\e\C-?" # 多次 backward-kill-word
"\ee": "\ed\ed\ed\ed\ed\ed\ed" # 多次 kill-word
# Alt+P 粘貼上一條命令最後參數
"\ep": "\e."
# Alt+Q/W 單詞跳轉 (替代 Alt+F/B)
"\eq": "\eb" # backward-word
"\ew": "\ef" # forward-word
定義「前綴鍵 + 服務縮寫」模式,按下前綴鍵後輸入縮寫自動執行對應命令。
# 服務管理前綴鍵
# Alt+S (Start) + 服務縮寫
"\es""sm": "systemctl start smb\n"
"\es""ht": "systemctl start httpd\n"
"\es""sq": "systemctl start squid\n"
# Alt+D (Down/Stop)
"\ed""sm": "systemctl stop smb\n"
"\ed""ht": "systemctl stop httpd\n"
# Alt+R (Restart)
"\er""sm": "systemctl restart smb\n"
"\er""ht": "systemctl restart httpd\n"
# Alt+T (Status)
"\et""sm": "systemctl status smb\n"
# Alt+C (Configure) + 服務縮寫 + 可選數字
"\ec""nf": "vi /etc/exports\n"
"\ec""sm": "vi /etc/samba/smb.conf\n"
"\ec""ssh1": "vi /etc/ssh/sshd_config\n"
"\ec""ssh2": "vi /etc/ssh/ssh_config\n"
"\ex""ga": "gaim &>/dev/null & disown\n"
"\ex""xm": "xmms &>/dev/null & disown\n"
"\ex""vm": "vmware &>/dev/null & disown\n"
"\ex""na": "nautilus &>/dev/null & disown\n"
# 當前 Shell 立即生效
$ bind -f ~/.inputrc
# 永久生效:已寫入 ~/.inputrc,新 Shell 自動讀取
# 或加入 ~/.bashrc: bind -f ~/.inputrc
$if mode=vi...$endif 區分 vi/emacs 模式。$VAR,需雙引號包裹。set keyseq-timeout 500 (ms),避免前綴鍵等待過久。bind -P 或 bind -p。建立個人化 ~/.inputrc,讓雙手永遠停留在主鍵區,將重複性操作轉化為肌肉記憶,是終端高手的標誌性技能。