history
コマンドは、現在のセッションのすべての履歴を一覧表示します。お気に入り:
1 ls
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history
興味のあるアイテムを検索するために、history
をgrep
でパイプすることができます
history | grep ls
1 ls
6 ls
10 ls
次のような最後の3つのコマンドも表示できます。
history 3
11 history
12 history | grep ls
13 history 3
しかし、特定の範囲の履歴を取得するにはどうすればよいですか?たとえば次のようなもの:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
history
の代わりに、 fc
を使用して範囲を選択できます。
fc -l 4 7
must履歴コマンドを使用する場合は、sedまたはawkを介してパイプします。
history | sed -n '10,20p'
history | awk 'NR >= 10 && NR <= 20'
それ以外の場合はcuonglmの答えがより良い選択肢です。
探しているコマンドの前後に行番号にgrepを付けて履歴を使用すると、自分に最適です。
たとえば、私はping mybox
を中心に何をしたかを探しています。多かれ少なかれ20行です。
$ history | grep "ping mybox" 20325 ping mybox
これは20325
の行なので、[20320..20339]
の範囲の数字で始まる行をgrepするだけです。
$ history | grep ^203[2-3][0-9]