"screen -R"에 해당하는 tmux?


10

tmux attach명령 이상의 조합 같은 역할을 screen -r하고 screen -x- 먼저 가장 최근에 연결 할려고 분리 세션, 그리고 사용할 수없는 다음 경우는 현재 연결된 세션에 연결됩니다. 동작을 에뮬레이션하고 싶습니다 screen -R. 먼저 분리 된 세션에 연결 한 다음 분리 된 세션이 없으면 새 세션을 시작하십시오. tmux에서 이것을 달성하는 가장 좋은 방법은 무엇입니까?

답변:


12

IRC 마법사를 참조한 후이 동작이있는 단일 tmux 명령이 없다고 확신합니다. 운좋게도 쉘을 사용하여 에뮬레이션하는 것은 매우 쉽습니다.

(tmux ls | grep -vq attached && tmux at) || tmux

새 세션을 시작할 때 "서버에 연결하지 못했습니다 : 연결이 거부되었습니다"출력을 (tmux ls 2>/dev/null | grep -vq attached && tmux at) || tmux
억제

3

tmux 매뉴얼에 나오는 내용에도 불구하고 :

             The target-session rules for attach-session are slightly
         adjusted: if tmux needs to select the most recently used session,
         it will prefer the most recently used unattached session.

다음과 같은 상황에서는 Drew의 답변이 제대로 작동하지 않습니다.

0: 1 windows (created Wed Nov  7 23:51:08 2012) [177x47]
1: 1 windows (created Wed Nov  7 23:51:33 2012) [177x47] (attached)

tmux at마지막 세션 (# 1)에 연결됩니다 (이 세션은 여전히 ​​다른 곳에 연결되어 있지만). 이것은 여러 tmux 세션을 실행하고 분리 된 세션에만 연결한다는 아이디어를 완전히 파괴합니다 (mosh + tmux + iterm2를 사용하여 완벽한 로밍 터미널 생성).

또 다른 방법은 연결되지 않은 세션을 수동으로 선택하는 것입니다.

tmux ls | grep -vq attached && tmux at `tmux ls | grep -vm1 attached | cut -d: -f1`


잘 잡아! 설명서가 실제 동작과 일치하지 않습니다. 이에 대한 버그 보고서 를 작성했습니다 .
Drew Frank

이 문제를 해결하는 패치가 나오므로 다음 릴리스에서는 광고 된대로 작동해야합니다.
Drew Frank

패치가 1.8입니까?
momeara

2

한 번에 두 개의 tmux 세션 만있는 경향이 있으므로 각 터미널 창에서 이와 같은 작업을 수행합니다.

터미널 창 0 :

tmux attach -t 0 || tmux new

터미널 창 1 :

tmux attach -t 1 || tmux new

2

이것은 나를 위해 가장 잘 작동했습니다.

if [ -z "$TMUX" ]; then
     (tmux ls | grep -vq attached && tmux at -t `tmux ls | grep -vm1 attached | cut -d: -f1`) || tmux new
fi

적절한 세션에 연결하려면 -t가 필요합니다.


1

이건 어떤가요

tmux attach || tmux new

또는 파일 ~/.tmux.conf이 존재하지 않으면 파일을 만들고 추가하십시오.

new-session

실행할 때 새 세션이 없을 때 새 세션을 작성합니다 tmux attach.

tmux대한 별칭을 만드는 것이 편리 할 수도 있습니다 tmux attach.


첫 번째 제안은 현재 첨부 된 tmux 세션 (screen -x와 유사)에 첨부됩니다. 이는 피하고 싶은 것입니다. 두 번째 제안은 동일한 문제를 나타내며 tmux source-file 명령을 사용하여 구성을 다시로드 할 때 "추가"tmux 세션을 생성하면 바람직하지 않은 결과가 발생합니다.
Drew Frank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.