답변:
함께 TMUX (나중에) 1.2, 당신은 사용할 수 -p
의 옵션을 display-message
(대신 연결된 클라이언트에 표시) stdout으로 출력에 메시지를 :
tmux display-message -p '#S'
#S
세션 이름으로 형식이 지정됩니다 (설명서 페이지의 status-left
옵션 설명 참조).
거의 5 년이 지난 후에도이 답변들 중 어느 것도 적절하지 않다고 지적한 사람이 아무도 없습니다. 현재 TTY가 호스트의 유일한 tmux 세션에 연결되어있는 한 두 가지 모두 제대로 작동하지만 다음과 같은 경우이 두 가지 대답이 동일합니다.
전자의 경우 여기에있는 두 답변 모두 현재 세션이 해당 세션에 의해 관리되는지 여부에 관계없이 연결된 세션의 이름을 다시보고합니다. 후자의 경우 결과가 불확실하거나 여러 답변이 될 수 있습니다.
올바른 질문은 "현재 터미널 세션이 연결된 tmux 세션의 이름은 무엇입니까?"
그가 그 질문에 대답하려면 다음 을 실행하십시오.
for s in $(tmux list-sessions -F '#{session_name}'); do
tmux list-panes -F '#{pane_tty} #{session_name}' -t "$s"
done | grep "$(tty)" | awk '{print $2}'
이것은 tmux 세션 수 (첨부 또는 기타)와 상관없이 현재 터미널 세션이 tmux 세션의 일부인지 여부에 관계없이 작동합니다.
tmux list-panes -a -F '#{pane_tty} #{session_name}'
을 나열하는 대신 모든 세션 창을 나열 하는 데 사용할 수도 있습니다 . 새로운 -a
것이 확실하지 않으므로 YMMV.
TMUX
을 실행하기 전에 환경 변수 를 확인하는 것과 함께 사용할 경우 제대로 작동합니다 tmux display-message -p '#S'
.
왜 이것이 예상대로 작동하지 않는지
에 대한 don_crissti의 의견 에
따라 확장되거나 수정 된 사람들의 대답 은 무엇 입니까? .grep -v
tim-peoples의 답변 에서 "$ (tty)"명령
| grep "$ (tty)"|
해당 컨텍스트에서 예상대로 작동하지 않습니다. 'tty가 아닌'문자열로 평가됩니다.
변수로 바꾸면이 문제가 해결됩니다.
tty = $ (tty)
...
| grep "$ tty"|
또한 tmux 세션이 존재하지 않으면 원래 코드는
"/ tmp / tmux-1000 / default에서 서버가 실행되고 있지 않습니다" 오류 메시지.
추가 2>/dev/null
하면 코드가 오류 메시지를 인쇄하지 않고 실행됩니다.
수정 된 코드는 다음과 같습니다.
tty=$(tty)
for s in $(tmux list-sessions -F '#{session_name}' 2>/dev/null); do
tmux list-panes -F '#{pane_tty} #{session_name}' -t "$s"
done | grep "$tty" | awk '{print $2}'