bashで履歴からコマンドを実行するときに、一旦確認してから実行したい場合について

historyコマンドを実行すると、
1422 gvfs-open ./
1423 dmesg
1424 top
1425 ls
1426 history | grep scp

というようなような出力がされ、
$ !1423

と入力して実行すると、履歴にあるdmesgコマンドが実行されます。以前実行したことがあるちょっと長めのコマンドを再び利用したいときに便利です。
(頻繁に使うようならエイリアス作ったりメモしといたりした方がいいですが)

さて、この機能は便利なのですが入力したらすぐに実行されてしまうので、確認や修正をしてから実行したい場合にはちょっと不便です。
(historyの出力からコピペして持ってくればいいわけですけども)

確認や修正をしてから実行したい場合、番号の後ろに「:p」と入力する方法があります。
Bash Reference Manual: Modifiers

上の例をこの方法で書き下すと
$ !1423:p

となります。この機能は番号のコマンドを実行せずに出力するだけです。ここではdmesgが出力されますが、入力行は空になります。そこで↑キー(もしくはCtrl-p)を押すと、入力行に出力されたコマンドが出てきます。後は確認なり修正なりして実行すればいいだけです。


コメント