Quantcast
Channel: Linux –俺的備忘録 〜なんかいろいろ〜
Viewing all articles
Browse latest Browse all 743

scriptコマンドでタイムスタンプ付与したターミナルログに対し、シェル芸で制御文字とカラーコードの削除をリアルタイムで行う

$
0
0

ちょっと前に、awkを使ってscriptコマンドで取得するターミナルログにタイムスタンプを付与する(Teratermとかのログみたいにする)処理について記述したことがあったのだが、この状態だとバックスペースなどの制御文字やカラーコードが残っている状態になってしまう。catなどで見る分には問題ないのだが、lessなどで確認するにはちょっとよろしくないよねということで、そういった制御文字やカラーコードを記録中に削除してしまうことにする。

で、よく制御文字を削除する方法としてはcolコマンドが用いられるのだが、この方法だとファイルを読み込んで削除はできても追記での削除はできないようだ。
なので、ちょっと汚いけどtrやsedで削除していく。

script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | tr -d '\000-\011\013\014\016-\037]0;' >> test_$(date +%Y%m%d_%H%M%S).log)

 

これで、記録されるログからは制御文字やカラーコードが削除されているはずだ。
…ただ、バックスペースとか上下キーでのhistory選択を行った際の特殊文字も全部消えてるので、これだと実行したコマンドが結局何だったのかが読みにくいかも。vimでファイル編集した際の内容がうまいこと記録されるのは良いけど、使いどころ次第だろうか。

 

よくわかるシステム監査の実務解説(改訂版) よくわかるシステム監査の実務解説(改訂版)

Viewing all articles
Browse latest Browse all 743

Latest Images

Trending Articles