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  history1000個のコマンド履歴が表示されています。
コマンド履歴の数を変更したい場合は、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 ファイル名 | 現セッションの履歴をファイルに書き出しする | 
コマンド履歴は作業などの後から見返せるので、削除するのはやめましょう!コマンド履歴を他のファイルに書き出して後から確認するのもオススメです。

