Shell 命令行是 Linux 系統管理的核心介面,掌握其操作技巧能成倍提升效率。本文系統梳理 Tab 補全、歷史記錄操作、複製貼上、虛擬終端切換、通配符模式、I/O 重定向、擴展機制、引用規則、快捷鍵綁定九大核心知識點,並附帶實用速查表。
1. 自動補全:Tab 鍵的進階用法
適用於路徑、變量($開頭)、用戶名(~開頭)、命令(行首)、主機名(@開頭,限 /etc/hosts)。
| 組合鍵 | 功能 |
| Alt+$ | 顯示所有可能補全項(等同雙擊 Tab) |
| Alt+* | 一次性插入所有匹配項 |
2. 命令行歷史:高效調用歷史指令
history 直接輸出記錄(預設 500 條)。
| 操作 | 按鍵/指令 | 說明 |
| 上一條 | Ctrl+P / ↑ | |
| 下一條 | Ctrl+N / ↓ | |
| 跳至歷史開頭 | Alt+< | |
| 跳至歷史末尾 | Alt+> | 即當前命令行 |
| 反向增量搜尋 | Ctrl+R | 輸入關鍵字即時匹配,再按 Ctrl+R 翻下一個 |
| 執行搜尋結果 | Ctrl+J | 複製到命令行,Enter 執行,方向鍵也可複製 |
| 退出搜尋 | Ctrl+G / Ctrl+C | |
| 重複上一條 | !! | 等同 ↑+Enter |
| 執行第 n 條 | !n | n 為 history 輸出行號 |
| 執行最近以 string 開頭 | !string | |
| 執行最近包含 string | !?string | |
| 執行並跳下一條 | Ctrl+O | 批量執行連續歷史指令 |
3. 複製貼上:終端專用快捷鍵
不可使用 Ctrl+C/V(會發送中斷信號)。
| 動作 | 方法 |
| 複製 | 滑鼠左鍵選取 / 雙擊選詞 / Ctrl+Shift+C / Ctrl+Insert |
| 貼上 | 滑鼠中鍵 / Ctrl+Shift+V / Shift+Insert |
4. 虛擬終端切換
- Ctrl+Alt+F1~F6:圖形界面 → 文本終端 1-6
- Alt+F1~F6:文本終端間切換
- Alt+F7:文本終端 → 圖形界面
5. 通配符:批量匹配檔案名
| 符號 | 匹配規則 |
* | 任意長度字符(含 0 個) |
? | 單一字符(不含 0 個) |
[chars] | 字符集合中任一字符 |
[!chars] | 非字符集合中任一字符 |
[[:class:]] | 字符類(如 [:alnum:] 字母數字、[:alpha:] 字母、[:digit:] 數字、[:lower:] 小寫、[:upper:] 大寫) |
謹慎使用 [A-Z] [a-z] 等範圍寫法,受區域設置影響可能不符預期。
6. 重定向:控制數據流向
Linux 提供三個標準流:標準輸入(0)、標準輸出(1)、標準錯誤(2)。
| 語法 | 作用 |
> file | 標準輸出重定向至文件(覆蓋) |
>> file | 標準輸出追加至文件 |
< file | 文件內容作為標準輸入 |
cmd1 | cmd2 | 管道:cmd1 輸出作為 cmd2 輸入 |
cmd > file 2>&1 | 標準輸出與錯誤同向重定向(舊式) |
cmd &> file | 同上(Bash 4+ 簡寫) |
cmd >/dev/null 2>&1 | 丟棄所有輸出 |
cmd 2>/dev/null | 僅丟棄錯誤輸出 |
順序很重要:cmd 2>&1 >file 是錯誤的(錯誤輸出仍指向終端)。
7. 擴展:命令執行前的預處理
每次執行前 Shell 會依序展開,可用 echo 驗證結果:
8. 引用:控制擴展行為
| 類型 | 語法 | 效果 |
| 弱引用 | "..." | 保留 $ \ ` 特殊含義;禁用詞分割、路徑名/波浪線/花括號擴展;參數/算術/命令替換仍生效 |
| 強引用 | '...' | 抑制所有擴展,字面字符串 |
| 轉義字符 | \ | 弱引用中輸出 $ \ ` 或 \n 等;命令行中取消單字符特殊含義 |
9. Shell 快捷鍵:行編輯與剪切環
光標移動
| 按鍵 | 動作 |
| Ctrl+A | 行首 |
| Ctrl+E | 行尾 |
| Ctrl+F/→ | 前進一字符 |
| Ctrl+B/← | 後退一字符 |
| Alt+F | 前進一詞(停詞尾) |
| Alt+B | 後退一詞(停詞首) |
| Ctrl+L | 清屏並歸位(等同 clear) |
文本修改
| 按鍵 | 動作 |
| Ctrl+D | 刪除光標處字符 |
| Ctrl+T | 交換光標字符與前一字符 |
| Alt+T | 交換光標詞與前一詞 |
| Alt+L | 光標至詞尾轉小寫 |
| Alt+U | 光標至詞尾轉大寫 |
剪切與貼上
被剪切內容存入 kill-ring 緩衝區(可多級)。
| 按鍵 | 剪切範圍 |
| Ctrl+K | 光標至行尾 |
| Ctrl+U | 光標至行首 |
| Alt+D | 光標至當前詞尾 |
| Alt+Backspace | 光標至詞首(若在行首則剪切前一詞) |
| Ctrl+Y | 貼上(yank) |
