bashで入力履歴も出力履歴も保存する
bash上でさまざまな操作をして、後になってから何をしたかわからなくなったり、あるいはどんな数値を見たか忘れてしまったりしたときはありませんか? そんなときのためのtipsです。自分が行った研究の記録をつける用途で考えているため、意図的なログの抹消への対策はしていません。サーバ管理用途で利用者の操作を監視したいといった目的には不向きです。
入力履歴の保存(.bashrcのバックアップ)
~/.bash_logout
DATETIME=`date +%Y%m%d%H%M%S`
history > ~/log/bash_history/$DATETIME
rm ~/.bash_history
DATETIME=`date +%Y%m%d%H%M%S`
history > ~/log/bash_history/$DATETIME
rm ~/.bash_history
と追記。もともとのbash_historyは消さなくてもよい(そうしたほうが前回ログイン時のコマンドをたどれる)ものの、ここではログの簡素化のため消してしまっています。もう少しうまい処理をすれば昨日の分だけは残しておくとかできるでしょうが……。セッションが正常に終了せず.bash_logoutが実行されなかった場合は次回まで持ち越されて保存されるのでログを失うリスクは大きくないはずです。
- ある日のログファイルだけ一覧したければ
cat ~/log/bash_history/20170101*
。 - ある日に実行したコマンドを一覧したければ
cat ~/log/bash_history/* | grep 20170101
とでも(これはhistoryの中身にもタイムスタンプをつけている前提。以下参照)
Historyの各エントリにもタイムスタンプを表示する
export HISTTIMEFORMAT="%Y%m%d%H%M%S "
参考:
1. https://askubuntu.com/questions/391082/how-to-see-time-stamps-in-bash-history
2. 日付の書式はman date
.bash_historyを複数のターミナル間で共有する(お好みで)
function share_history {
history -a
history -c
history -r
}
PROMPT_COMMAND='share_history'
shopt -u histappend
export HISTSIZE=9999
参考:
1. http://iandeth.dyndns.org/mt/ian/archives/000651.html
2. https://unix.stackexchange.com/questions/1288/preserve-bash-history-in-multiple-terminal-windows
出力履歴の保存(scriptコマンド利用)
~/.bashrc
if [ "$SSH_TTY" != "" ]; then # scpが使えなくなる問題を回避するためのおまじない。
P_PROC=`ps aux | grep $PPID | grep sshd | awk '{print $11}'` # 子プロセスでは実行しない
if [ "$P_PROC" = "sshd:" ]; then
script -f -q ~/log/script/`date '+%Y%m%d%H%M%S'`
fi
if [ "$SSH_TTY" != "" ]; then # scpが使えなくなる問題を回避するためのおまじない。
P_PROC=`ps aux | grep $PPID | grep sshd | awk '{print $11}'` # 子プロセスでは実行しない
if [ "$P_PROC" = "sshd:" ]; then
script -f -q ~/log/script/`date '+%Y%m%d%H%M%S'`
fi
やってみるとわかりますが、このログは見づらく量も膨大になるので、特段必要があるときにがんばって検索してやる程度のものになるでしょう。それでもあるのとないのとでは大違いです。また、sshで接続していることを前提としているのでこのままではローカルでは走りません。
参考:
1. http://blog.mogya.com/2008/01/ssh.html
2. https://stackoverflow.com/questions/12440287/scp-doesnt-work-when-echo-in-bashrc
Author And Source
この問題について(bashで入力履歴も出力履歴も保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/Ken-Kuroki/items/664701ed0d73953918be著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .