答え1
ウィンドウID自体を実行するのではなく、ウィンドウIDを出力するコマンドを実行したいと思います。
例えば
$ var=$(tmux run "printf '%s' '#{pane_id}'")
$ echo "$var"
%2
答え2
私はタイトルについて話すことではありません。私はあなたのものを修正しようとしませんtmux run …
。XYの問題)。実際の問題を解決しています。
ウィンドウ番号に基づいてウィンドウ切り替え動作を変更できるように、変数にコマンド出力のみをキャプチャしようとしています。
ウィンドウで実行されているプロセスはすでにTMUX_PANE
その環境に存在している必要があります。例: echo "$TMUX_PANE"
、env | grep TMUX
。これは、ウィンドウのシェルスクリプトを$TMUX_PANE
変数として直接使用できることを意味します。しかし、ウィンドウ自体からIDを取得したいのか、それとも別の場所でIDを取得したいのかわかりません。
より一般的なアプローチは次のとおりです。
tmux display-message -p '#{pane_id}'
以下を使用して、シェル変数としてキャプチャできます。
var="$(tmux display-message -p '#{pane_id}')"
利点は次のとおりです。
- このコマンドはtmuxの外側のシェルで動作します(明らかに利用できません
$TMUX_PANE
)。 - tmuxの内部では有効ですが、ウィンドウでは無効です(たとえばprefix:
display-message '#{pane_id}'
Enter、デフォルトprefixはCtrl+ b)。これには、tmux bind-key …
キーストローク()を介して実行できるコード(おそらくシェルコード)が含まれます。 display-message
Acceptを-t
使用すると、ウィンドウ内でもウィンドウ自体のIDに制限されません。例:tmux display-message -p -t '{bottom}' '#{pane_id}'
。バラよりman 1 tmux
説明する場所ターゲットウィンドウ。