ブログ

コマンドの履歴表示と履歴内のコマンドを編集して再実行する方法

at_shiita.ishigaki
2021年12月2日 8時55分

コマンドの履歴を表示するには、fc -lコマンドを使用します。

[armadillo ~]# fc -l
169      mv a.txt abc.txt
170      mv b.txt def.txt
171      ls abc.txt 
172      ls def.txt
:(省略)

コマンドの履歴を表示する範囲を指定することもできます。
※ここでは例として、169~172番のコマンド履歴を表示します。

[armadillo ~]# fc -l 169 172
169      mv a.txt abc.txt
170      mv b.txt def.txt
171      ls abc.txt 
172      ls def.txt

過去に実行したコマンドを編集して再実行するにはfcコマンドを使用します。
※ここでは例として、171番目のコマンドを"ls abc.txtを"ls def.txt"に編集して再実行します。fcコマンドのオプションに数値を与えない場合は、直前のコマンドを編集します。
※テキストエディタを保存せずに終了しても、コマンドが実行されることに注意してください。コマンドの実行を行わない場合は、コマンドを削除してからテキストエディタを終了してください。

[armadillo ~]# fc 171 //初期状態ではviで編集画面が表示されます。
ls abc.txt
~
~
"/tmp/bash-fc.ib7U3m" 1L, 12C
 
abc.txtをdef.txtに変更し、viを終了します。
 
[armadillo ~]# ls def.txt 
def.txt

fc -sコマンドを使用すると、テキストエディタを開かずに、コマンドを編集して再実行することができます。
fc -s [OLD=NEW] [COMMAND]形式を使用すると、COMMANDはOLDがNEWに置換されて再実行されます。
※ここでは例として、fcコマンドの例と同様に"ls abc.txt"を"ls def.txt"に変更し、再実行します。
fcコマンドの例と同様に、コマンドのオプションに数値を与えない場合は、直前のコマンドに対して編集し実行します。

[armadillo ~]# fc -s abc=def 171
ls def.txt 
def.tx