目的
- ターミナルを起動したときに自動でログを取得したい
- 出力をコピーするのが面倒くさい
- 障害対応で毎度コピーするくらいなら最初から設定したい
- 振り返りたい
- 操作したコマンドなんだっけ?
- あの時の実行結果どうだったけ?
- 監査目的
- 操作ログは残せ!と言われた
- 超慎重派
- 出力をコピーするのが面倒くさい
設定方法
ログ出力用のディレクトリを作成する
mkdir -p /Users/[username]/scriptlogs/
[ターミナル.app]を起動する
[ターミナル] - [環境設定]を開く
[設定]- [シェル]を開いて、[コマンドを実行]にチェックを入れる
以下をテキストボックスに入力
now=`date +%Y%m%d%H%M%S`;logpath=~/scriptlogs/script_${now}.txt ;script ${logpath}
ログファイルが沢山増えたときに探したりlsが遅くなったりして大変になるので、ディレクトリを分けたければ、ディレクトリ用の変数と、ファイル名用の変数を設定する。
mkdir -p を使えばディレクトリがなければ作成してくれるし、なければ何もしない(エラーも吐かない)。
e.g. ~/scriptlogs/yyyy/mm/dd/script_hhmmss.txt
directory=~/scriptlogs/$(date +%Y)/$(date +%m)/$(date +%d);filename=script_$(date +%H%M%S).txt;mkdir -p ${directory}; script ${directory}/${filename}
ターミナルを一度閉じる
ターミナルを起動する
以下のように表示される
Last login: Tue Feb 11 18:01:38 on ttys002
now=`date +%Y%m%d%H%M%S`;logpath=/Users/[username]/scriptlogs/script_${now}.txt ;script ${logpath}
[username]-no-MacBook-Air:~ [username]$ now=`date +%Y%m%d%H%M%S`;logpath=/Users/[username]/scriptlogs/script_${now}.txt ;script ${logpath}
Script started, output file is /Users/[username]/scriptlogs/script_20140211180947.txt
bash-3.2$
「bash-3.2$」ってプロンプトが気に食わない人は…
bash --login