Linuxサーバーを運用していてコマンドの履歴を見たいと思った事はないでしょうか?
またコマンド履歴から実行すると便利だと思いませんか?
という事でLinuxサーバーのコマンド履歴を見たり、実行したりしてみます。
筆者はWindowsサーバーやLinuxサーバーの運用構築を11年以上おこなってきました。その経験を元に知識を公開していきます!
Linuxでコマンドの履歴を見る方法
Linuxでコマンド履歴を見る方法は2つあります。
- キーボードの矢印キーの上を押す
- historyコマンドで見る
キーボードの矢印キーの上を押す
キーボードの矢印キーの上を押すと、コマンド履歴の最新が表示されます。
更に上を押していくことで、新しい履歴から順に表示されていきます。
実行したいコマンド履歴になれば、エンターを押せばそのまま実行できます。
コマンド履歴を見るhistoryコマンドで見る
historyコマンドでコマンド履歴が一覧表示されます。
[root@localhost ~]# history
80 passwd -e test1
81 cat /etc/shadow
~省略
1078 du
1079 history
1000個のコマンド履歴が表示されています。
コマンド履歴の数を変更したい場合は、HISTFILESIZEというシェル変数とHISTSIZEという環境変数を変更します。
export HISTSIZE=500
export HISTFILESIZE=500
コマンド履歴から実行する方法
コマンド履歴を表示すると番号が表示されています。
左の番号を使用してコマンド実行する事が可能です。
コマンド履歴からコマンド実行する方法は、「!」の後に番号を指定すれば可能です。
[root@localhost ~]# history
~省略~
1098 ls
1099 ls -a
1100 cat .bash_history
1101 history
1102 du -ah
1103 history
上のようなコマンド履歴があるとします。1098番のlsコマンドを実行したいのであれば「!1098」を実行します。
[root@localhost ~]# !1098
ls
file1.txt startup.log testdir1
コマンド履歴からコマンド実行できています。
コマンド履歴を検索する方法
コマンド履歴はデフォルトで1000個もあり、欲しいコマンド履歴を探すのに大変ではないでしょうか?
そんな時に役立つのがコマンド履歴検索です。
コマンド履歴検索のやり方はCtrl+rを押す事です。
プロンプトが「ユーザー名@localhost」から「reverse-i-search」に変更されてコマンド履歴検索が可能になります。
[root@localhost ~]#
(reverse-i-search)`df': df -h
欲しいコマンド履歴の最初の一文字を入力すると、その文字から始まったコマンド履歴が表示されます。
欲しいコマンド履歴になるまで文字を入力していき、検索します。
コマンド履歴を見るhistoryコマンドのオプション
コマンド履歴を見るhistoryコマンドのオプションについてまとめます。
historyコマンドのオプション | オプションの効果 |
---|---|
数字 | 指定した数字分のコマンド履歴を表示する |
-d 番号 | 指定した番号のコマンド履歴を削除する |
-c | コマンド履歴一覧を全て削除する |
-r ファイル名 | コマンド履歴ファイルを読み込み、履歴に追加する |
-w ファイル名 | 現在のコマンド履歴をファイルに上書きする |
-a ファイル名 | 現セッションの履歴をファイルに書き出しする |
指定した数字分のコマンド履歴を表示する
デフォルトで1000個もあるコマンド履歴。
そんなに表示しなくても良いという場合は、個数を指定してコマンド履歴を表示できます。
個数を指定してコマンド履歴を表示する方法は、「history」コマンドの後に欲しい数字を入力するだけです。
[root@localhost ~]# history 10
1096 history 5
1097 ls
1098 ls /home/root
1099 ls -a
1100 cat .bash_history
1101 history
1102 du -ah
1103 history
1104 ls
1105 history 10
指定した分のコマンド履歴が表示されました。
指定した番号のコマンド履歴を削除する
コマンド履歴を削除する事も可能です。
コマンド履歴を削除するには、dオプションで削除したい番号を指定するだけです。
[root@localhost ~]# history 10
1096 history 5
1097 ls
1098 ls /home/root
1099 ls -a
1100 cat .bash_history
1101 history
1102 du -ah
1103 history
1104 ls
1105 history 10
[root@localhost ~]# history -d 1100
[root@localhost ~]# history 10
1097 ls
1098 ls /home/root
1099 ls -a
1100 history
1101 du -ah
1102 history
1103 ls
1104 history 10
1105 history -d 1100
1106 history 10
前回のコマンド履歴1100番の「cat .bash_history」コマンドが削除されています。
コマンド履歴一覧を全て削除する
コマンド履歴一覧を全て削除する事も可能です。
コマンド履歴一覧を全て削除するには、cオプションを使用します。
[root@localhost ~]# history -c
[root@localhost ~]# history
108 history
以前までのコマンド履歴が全て消えています。
コマンド履歴ファイルを読み込み、履歴に追加する
コマンド履歴をcオプションで全削除しましたが、コマンド履歴を保存しているファイルからは削除されていません。
そのファイルを読み込む事でコマンド履歴を復活させることも可能です。
コマンド履歴ファイルを読み込み、履歴に追加する方法はrオプションにファイルを指定するだけです。
ユーザーのコマンド履歴を保存しているファイルは、ホームディレクトリの「.bash_history」ファイルです。
[root@localhost ~]# history
108 history
[root@localhost ~]# history -r .bash_history
[root@localhost ~]# history
201 chage -l root
202 chage -l testuser2
~省略~
1199 history -a
1200 history
[root@localhost ~]#
コマンド履歴が1つしかなかったのが、「bash_history」ファイルを読み込む事で復活しました。
現在のコマンド履歴をファイルに上書きする
現在のコマンド履歴をファイルに上書きする事が可能です。
現在のコマンド履歴をファイルに上書きする方法は、wオプションでファイルを指定するだけです。
[root@localhost ~]# history -c
[root@localhost ~]# history
202 history
[root@localhost ~]# history -w .bash_history
[root@localhost ~]# cat .bash_history
history
history -w .bash_history
[root@localhost ~]#
[root@localhost ~]# history -r .bash_history
[root@localhost ~]#
[root@localhost ~]# history
202 history
203 history -w .bash_history
204 cat .bash_history
205 history -r .bash_history
206 history
207 history -w .bash_history
208 history
「history -c」コマンドでコマンド履歴を全削除して「history -w .bash_history」コマンドでファイルに上書きします。
そうする事で「history -r .bash_history」コマンドで再読み込みしてもコマンド履歴を削除する事が可能できました。
まとめ:Linuxでコマンドの履歴を扱う方法
Linuxでコマンド履歴を見る方法は2つあります。
- キーボードの矢印キーの上を押す
- historyコマンドで見る
コマンド履歴からコマンド実行する方法は、「!」の後に番号を指定すれば可能です。
コマンド履歴検索のやり方はCtrl+rを押すして、検索モードにして最初の文字を入力する事です。
コマンド履歴を見るhistoryコマンドのオプションについてまとめます。
historyコマンドのオプション | オプションの効果 |
---|---|
数字 | 指定した数字分のコマンド履歴を表示する |
-d 番号 | 指定した番号のコマンド履歴を削除する |
-c | コマンド履歴一覧を全て削除する |
-r ファイル名 | コマンド履歴ファイルを読み込み、履歴に追加する |
-w ファイル名 | 現在のコマンド履歴をファイルに上書きする |
-a ファイル名 | 現セッションの履歴をファイルに書き出しする |
コマンド履歴は作業などの後から見返せるので、削除するのはやめましょう!コマンド履歴を他のファイルに書き出して後から確認するのもオススメです。