Edited at

tmuxで現在アタッチしているセッション名を取得

More than 3 years have passed since last update.

$ tmux list-sessions -F '#{?session_attached,#S,}' | grep -v '^$'

複数のセッションにアタッチしている可能性がある点に注意。

現在操作しているシェルのセッション名が欲しい場合は以下のとおり。

$ tmux list-panes -F '#{?pane_active,#S,}' | grep -v '^$'


解説

list-sessions でセッションの一覧を表示できる。

-Fを指定するとそのフォーマットを指定できる。

フォーマットには変数を使うことができる。

変数を展開するには#を使い波括弧で囲むとできる。

#{session_attached}とするとアタッチしているセッションの場合1と表示される。

#Sはセッション名を返す。

$ tmux list-sessions -F '#{session_attached} #S'

0 hoge
1 goro
0 mogu
0 koro

変数の値が0の場合と1の場合で処理をわけたいときは #{?変数名,1の場合,0の場合}が使用できる。

$ tmux list-sessions -F '#{?session_attached,attach,not} #S'

not hoge
attach goro
not mogu
not koro

1の場合にSの変数の中身をだせば目的を達成できる。

$ tmux list-sesssions -F '#{?session_attached,#S,}'

goro

空行がでてしまうので好きな方法で消せばよい。

セッションは複数attachされている場合がある。

アクティブなペインをつかってセッション名を表示すれば、ひとつだけ出力できる。