【bash】historyコマンドで出力される値をカスタマイズする

【bash】historyコマンドで出力される値をカスタマイズする


historyコマンドはカスタマイズすべき

historyはコマンドの入力履歴を調べる際によくコマンドだ。作業履歴を残しておくことはエンジニアとして非常に重要だし、後からWikiやブログなどにまとめて公開する際にも重宝する。
ただ、デフォルトの設定だと必ずしも使い勝手のよいものとは言えないのでカスタマイズする。

デフォルト設定の困った点

  • 1000行までしか保存されない。
  • lsやpwdなど、履歴として必要ないコマンドまで保存される。
  • 日時がないため、いつのコマンド実行したものなのかわかりづらい。

以上のデメリットを解消するために以下の環境変数を変更する。

環境変数名 説明
HISTSIZE historyのキャッシュに保存されるコマンド数
HISTFILESIZE .bash_historyに保存されるコマンド数
HISTIGNORE この変数に指定したコマンドはhistoryに記録しない (:で区切り複数指定できる)
HISTTIMEFORMAT 履歴日時のフォーマットを指定する

HISTSIZEとHISTFILESIZEの違い

HISTSIZEとHISTFILESIZEの違いがわかりづらいので説明を加える。
historyコマンドで表示される値は最終的に~/.bash_historyに記録されるがいきなり書かれるわけではなく、一度キャッシュに保存されexitコマンドなどでターミナルを抜けたタイミングで~/.bash_historyに追記される。
HISTSIZEはキャッシュに保存される数を規定しており、HISTFILESIZEは.bash_historyで保存されるコマンド数を規定している。
両方10000にしておけば問題ないだろう。
ということで、~/.bash_profileに以下を追記する。

export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTIGNORE=ls:history:pwd
export HISTTIMEFORMAT='%Y/%m/%d %H:%M:%S, '

書き込んだら$ source ~/.bash_profileで変更を読み込ませてhistoryコマンド実行すると、変更が反映されているはずだ。
Mac, Amazon Linux, raspbianで上記の方法でうまくいくことを確認した。

ターミナルを閉じる際はexitを使おう

上の項で説明したが、ターミナルを×ボタンで閉じてしまうとキャッシュが.bash_historyに書かれず消えてしまう。
そのため、抜ける際はexitコマンドで抜ける癖をつけよう。

よかったら「いいね」お願いします!
Text by Takashi Yoshida