답변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
설명하는 장소대상 창.