揮発性のメモ2

http://d.hatena.ne.jp/iww/

今実行しているコマンドをウィンドウタイトルに表示する

端末をたくさん開いている状態で、
tailとかmakeとか長い処理してると どの端末でなにをしてるかわかんなくなるので、
今実行しているコマンドをウィンドウタイトルに表示したいので、表示した。


.bashrc にこれを書き足す

# window title
trap 'echo -ne "\e]0;$BASH_COMMAND\a"' DEBUG


超便利



bashでコマンドをトラップする

たぶん使わないであろうBashのデバッグ方法 - harry’s memorandum
Shellスクリプトをデバッグ(ステップ実行)する – OSS-Lab オープンソース・ソフトウェア-ラボ
trap hogehoge DEBUG で、なにかコマンドを実行されるたびに
その実行直前に 好きなコマンドhogehoge を実行できる

bashで最後に実行したコマンド

command line - What is the $BASH_COMMAND variable good for? - Ask Ubuntu
環境変数$BASH_COMMAND には、最後に実行したコマンドが入っている

端末のウィンドウタイトルを書き換える

echo -ne "\e]0;piyopiyo\a"
端末のウィンドウタイトルを書き換えるエスケープシーケンスを使う。
\e]0;\a の間に挟んだ文字列 piyopiyo がウィンドウタイトルになる

注意事項

export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@$HOSTNAME \[\e[33m\]\w\[\e[0m\]\n\$ "

プロンプトに最後のコマンドが残り続けるので、実行中のときだけ表示したいときは プロンプトで毎回ウィンドウタイトルを書き換えるようにすること


解決したいこと、やりたいこと

  • 「最後に実行したコマンド」なので、パイプで結んでると最後のコマンドしかでないとかある
    幸い、DEBUGでひっかかったときにはすでにコマンド履歴には書き込まれてるので、そこから文字列を持ってくるのがよさそう
  • 日本語が文字化けする
    テラタームのときはSJISに変換しないと文字化けする
  • ついでに、最後に実行したコマンドが実行にかかった時間 も記録できそう
    いつも「timeつけ忘れた〜」とか言ってるのが解決できる