tmux run은 화면을 지우고 인쇄합니다. 동작을 다음 줄로 변경하는 방법

tmux run은 화면을 지우고 인쇄합니다. 동작을 다음 줄로 변경하는 방법

변수에서 현재 창을 캡처하려고 합니다. 그러나 tmux run "#{pane_id}"명령 출력을 사용하여 현재 창을 덮어쓴 다음 키를 누른 후 창을 지웁니다. 내 원격 컴퓨터는 창의 다음 줄에 동일한 명령 출력을 인쇄합니다. 내 로컬 컴퓨터가 다음 줄로 인쇄하도록 동작을 어떻게 변경합니까?

창 번호에 따라 창 전환 동작을 변경할 수 있도록 변수에 명령 출력만 캡처하려고 합니다.

명령 전 터미널: 여기에 이미지 설명을 입력하세요.

명령 후 터미널:여기에 이미지 설명을 입력하세요.

특정 키를 누르면 명령 이전의 터미널로 돌아갑니다.

답변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: 기본값 prefixCtrl+ b). 여기에는 tmux bind-key …키 입력( )을 통해 실행할 수 있는 코드(아마도 쉘 코드)가 포함됩니다.
  • display-messageAccept 를 -t사용하면 창 내에서도 창 자체의 ID로 제한되지 않습니다. 예: tmux display-message -p -t '{bottom}' '#{pane_id}'. 바라보다man 1 tmux 설명하는 장소대상 창.

관련 정보