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)を押すと、入力行に出力されたコマンドが出てきます。後は確認なり修正なりして実行すればいいだけです。


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)