読者です 読者をやめる 読者になる 読者になる

Studio3104::BLOG.new

uninitialized constant Studio3104 (NameError)

historyをカスタマイズ!!


とは言っても、Ubuntu様の.bashrcをほぼそのまま使ってます。
Ubuntuはかゆいところに手が届く設定が最初から随所にされているので本当に素晴らしい。

他にも、「こんなの便利だよ!とかあったら教えてもらいたい。

# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace

# Include a time stamp on history
HISTTIMEFORMAT='%m/%d %T '

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=10000
HISTFILESIZE=20000

# Synchronize the history between the terminals
function sync_history {
  history -a
  history -c
  history -r
}
PROMPT_COMMAND='sync_history'


コメントつけてますが、一応各項目の解説をします。

連続した同一コマンド、先頭にスペースを含むコマンドの実行を記録しない

lsとかdfとか同じコマンドを連続実行してhistoryを埋め尽くしてしまうことはありませんか?
コレを設定すればそんなことはなくなります。

HISTCONTROL=ignoredups:ignorespace

タイムスタンプを記録

コマンドをいつ実行したのかがわかるようになります。
「あの設定したのっていつだっけ」と思って設定ファイルをstatしても、最近の更新情報しか確認できないけど、コレを設定しておけば遡れるようになるので便利。

HISTTIMEFORMAT='%m/%d %T '

この例だとこんな感じになる。

  751  05/08 16:12:38 history 
  752  05/08 16:13:01 vim .bashrc 
  753  05/08 16:13:22 history 
  754  05/08 16:14:14 vim .bashrc 
  755  05/08 16:14:32 . .bashrc 
  756  05/08 16:14:34 history

bashのhistoryに時刻を表示する - (ひ)メモ

historyファイルを上書きするのではなく、追記する

shopt -s histappend

コマンド履歴の保存件数を設定

デフォルトだと、「ファイルに1000件、メモリに2000件」だが、すぐ埋まってしまうので10倍にしてます。

HISTSIZE=10000
HISTFILESIZE=20000

複数の端末間でコマンド履歴を共有する

タブとか画面分割、screenによって同じサーバに複数ターミナルからsshとかよくやると思います。
「さっき実行したdstatのオプションなんだっけ」ってなってhistory見て、「あー、こっちのターミナルじゃねぇや」とかよくあると思います。
コレを設定しておけば解決です。

function sync_history {
  history -a
  history -c
  history -r
}
PROMPT_COMMAND='sync_history'

iandeth. - bashにて複数端末間でコマンド履歴(history)を共有する方法