LoginSignup
2
2

More than 5 years have passed since last update.

screenに名前を自動的につけてhardstatusに表示する

Last updated at Posted at 2014-05-06

screenを便利に使うため、ちょちょっと工夫。
まず.zshrcsメソッドを作成。ディレクトリ名をセッション名にして、既にあればアタッチするようにしておく。

export SCREENDIR=/usr/local/screens
s () {
    if [ -n "$1" ]; then
      name="$1"
    else
      pwd=`pwd`
      name=":`basename $pwd`:"
    fi
    screen -x $name || screen -r $name || screen -S $name
}

名前の前後に":"を付けているのは、ちょっとした理由から。アタッチする際にscreenが部分一致で探してしまうため、番兵を置いておくようにしました。これで例えばfooってディレクトリとfoobarってディレクトリ両方でデタッチしてあってもscreenコマンドがエラーにならない。

で、複数のscreenをタブで切り替えて使ってるわけですが、ひと目で見分けられるようにhardstatusに表示しておきたい。しかし.screenrc$STYが渡ってこないので、もう一工夫。

hardstatus alwayslastline '%m/%d %02c:%s %{= .g}%H:%`%{-} %L=%-w%45L>%{=u g.}%n %t%{-}%+w %-17<%=%{= .y}(%l)'
backtick 0 30 30 sh -c 'screen -ls | grep --color=no -o "$PPID[^[:space:]]*"'

加えたのは1行目の"%`"と2行目。
これで

  1. 任意のディレクトリでsを叩きscreenを起動
  2. 他のディレクトリでもsで作業
  3. screenを切り替えてもセッション名が表示されているので混乱しない
  4. 作業が一段落したらデタッチ
  5. 次回作業時、また該当ディレクトリでs

のように作業できるようになりました。

前々から手を入れようと思っていた箇所でしたが、GWの最後にちょっと幸せに。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2