Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 伺服器綜合

Bash 歷史指令展開技巧:善用上一條指令參數提升終端機效率

編輯:伺服器綜合

前言

熟練使用 Bash 歷史展開(History Expansion)可大幅減少重複輸入,尤其在處理長路徑、多參數指令時效果顯著。本文整理最實用的展開語法與實例。

核心展開語法速查表

語法說明範例
!*上一條指令的所有參數vim a.txt b.txt → git add !* 等同 git add a.txt b.txt
!$上一條指令的最後一個參數mkdir /tmp/test → cd !$ 進入該目錄
Alt+. 或 Esc+.互動模式下自動補全最後一個參數按下組合鍵即出現 /tmp/test
!-:上一條指令除最後一參數外的所有內容(含指令本身)tar -zcvf backup.tar.gz /home/user → !-: 取得 tar -zcvf backup.tar.gz
Alt+數字+.取得上一條指令的第 N 個欄位(0 為指令本身)ls -lh /etc → Alt+2+. 取得 -lh
^舊^新^替換上一條指令第一處「舊」為「新」並執行grep error /var/log/messages → ^error^warn^ 執行 grep warn /var/log/messages
!!:gs/舊/新/替換上一條指令所有「舊」為「新」並執行echo foo foo → !!:gs/foo/bar/ 執行 echo bar bar
!!重複執行上一條完整指令同上
!數字執行 history 中編號為 數字 的指令!1024

實戰情境範例

情境 1:連續對同組檔案操作

$ vim main.c utils.c config.h
$ git add !*
$ git commit -m "update core modules"
$ gcc -Wall !* -o main

情境 2:建立目錄後立即進入

$ mkdir -p /var/www/project/{css,js,images}
$ cd !$          # 進入 images(最後一參數)
# 若要進入 project 根目錄:
$ cd !-:         # 取得 mkdir -p /var/www/project/{css,js,images},再手動調整

情境 3:修正拼字錯誤

$ systemctl status nginxd
# 發現服務名稱錯誤
$ ^nginxd^nginx^
# 自動執行 systemctl status nginx

情境 4:批次重命名副檔名

$ for f in *.htm; do mv "$f" "${f%.htm}.html"; done
# 發現漏掉 .html 檔
$ !!:gs/.htm/.html/   # 將指令中所有 .htm 替換為 .html 並重跑

進階技巧

  • history | grep 關鍵字 快速尋找歷史指令編號,再用 !編號 執行。
  • set -o vi 或 set -o emacs 開啟命令列編輯模式,配合 Ctrl+R 反向搜尋歷史。
  • 環境變數 HISTCONTROL=ignoredups:erasedups 避免重複紀錄;HISTSIZE=10000 增加記錄條數。

熟練這幾組展開語法,終端機操作速度可提升 30% 以上,且減少拼字錯誤。建議先從 !$、!!、^old^new^ 開始練習,融入日常工作流。

Copyright © Windows教程網 All Rights Reserved