今いる仮想端末がtmuxの中にいるか判定するワンライナー
[[ $(tty) == $(tmux list-panes -F '#{pane_tty}') ]] && echo true || echo false
概要
-
tmux display-message -p '#S'
でセッション名を表示できる。 - ただ、tmuxの外にいても、別の仮想端末でtmuxが起動していたらセッション名が表示できてしまう。
- そのため、今いる仮想端末がtmuxの中にいるか判定する目的には利用できなかった。
- そこで、
tty
とtmux list-panes -F '#{pane_tty}'
の出力の一致を判定する。
解説
-
tty
で現在の端末デバイス名を表示する -
tmux list-panes -F '#{pane_tty}'
で今のペインの端末デバイス名を表示する - 一致すれば true
- 不一致なら false
$(tty)
- ttyコマンド
- 現在の端末デバイスを表示する
$ tty
/dev/ttys001
$(tmux list-panes -F '#{pane_tty}')
- tmux list-panesコマンド
- -F でフォーマットを指定して、ペインの端末デバイスを表示する
- wiki: https://github.com/tmux/tmux/wiki/Formats
- code: https://github.com/tmux/tmux/blob/c311202b73e861a4b41e64bd411286675570043f/tmux.1#L6000
$ tmux list-panes -F '#{pane_tty}'
/dev/ttys004