それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Gnu Screen のタイトルを自動的につける。

いつまでGNU Screen使ってんだよと言われそうですが。。。screenについた「GNU」という文字列が私を惹きつけて止まないのです。bashだってGNU bashですからね。。。GNUGPLが広がるのが未来時代だと思う。

prompt コマンドを使う。

SCREENのタイトルバーをそれぞれ、「実行中のコマンド or カレントディレクトリ」に設定します。

f:id:takuya_1st:20151012205806j:plain:w300

PROMPT_COMMAND でシェルのタイトルをつけていく

if [[ $(uname -a) = *raspberry* ]] ;then
    PS1='${debian_chroot:+($debian_chroot)}\e[01;32m\u\e[0m\e[38;5;216m@\h:\e[0m\e[01;34m\w\[\e[0m$ '

    if [ $TERM == 'screen' ]; then
      export PROMPT_COMMAND='echo -ne "\033k\033\0134\033k${PWD/#$HOME/\~}\033\\"'
    fi
fi

ポイントは $TERMでscreen起動中だけ有効にしているのと $(uname) を使って、ホストごとに設定を変えてるところでしょうか。bashrcは使いまわすので。。。

ちなみにウインドウの文字を変えるには。。。

screen を使ってないなら、

window_title() { echo -ne "\e]0;$1\a"; }
window_title コレはテストです

screen のタイトルを自分で決めるには

screen_title () { echo -ne "\ek$1\e\\"; }
screen_title これはテスト

参考資料

PS1とPROMPT_COMMAND, GNU screenでの活用も

screenでタイトルを,コマンド実行中はコマンド名に,でなければ現在のディレクトリ名に自動で設定する - shtaxxx weblog

Linuxで、bash プロンプトを素敵で実用的なものに変更する