bashでhistoryの内容をカスタマイズする
「けっこうややこしいコマンドを実行したけどどうやったっけ?」とか「現状どうしてこんななのか、コマンド実行履歴を知らねば」というような場合、便利に使ってる"history"。
デフォルトでも有益な情報が得られるが、カスタマイズするともっともっと便利になるよということでメモ。
bash環境の場合bash3以上であれば有効と思われる。(手元環境はbash version 3.2なので2系は未検証)
基本的にホームディレクトリにある".bashrc"を編集することで有効になる。
すべてのアカウントに影響を与えるのであれば"/etc/profile"に記述してもOK。ただし、/etc/profileの設定は$HOME/.bashrcの値でオーバーライトされるのでご注意
●コマンドが実行されたタイミングを知りたい
どのようなことが実行されたことはわかっても、それが具体的なタイムスタンプがあるとなぜそんなオペレーションをしたかのヒントになることはありあり。
HISTTIMEFORMAT='%y/%m/%d %H:%M:%S ';これで実行時刻がコマンドの前につく。なお、タイムスタンプ形式はカスタマイズ可能。今回の指定は"2016-05-19 20:23:45"のよに表示する形式である。
ただし、過去の実行履歴については情報がないため、この.bashrcを修正した時刻が一律で設定されるのに注意。
また、もし再度このフォーマット行を修正すると、その日付でまた変更されてしまうので、過去の実行結果のほうが未来日付になるという不思議な状態が発生することもあるのはご愛嬌。
●コマンドの履歴保存量を増やしたい
デフォルトでは1000が履歴保持数だが、もっと欲しくなる場合はあるだろう。この場合、現状のセッション下だけでいいのか後からでもみたいかで設定値はちょっと変わる。
HISTSIZE=10000これでともかく拡張。
HISTFILESIZE=10000で履歴ファイルへの記録が1万行になる。普通は十分だろうと思うが、利用方法次第だろう。
●記録したくないコマンドがある
履歴件数も限られていることだし、明らかに知らなくていいコマンドは履歴に残したくない、という要望はあるかと思う。たとえば"ls"とか"pwd"とかの現状確認のために打ったコマンドである。
HISTIGNORE=ls:pwdこれでlsやpwdは記録しないので、実際の影響があった処理の履歴だけを確認することができる。
これだけでかなり便利になるはず。
もちろんhistoryは監査目的のユーティリティではないので、そうした目的にはそれ専用のソリューションを用いるべきであるが、そこまでの要求でなければこれでもOKかと。
| 固定リンク
コメント