tilix 터미널 에뮬레이터에서 tmux 세션 실행

tilix 터미널 에뮬레이터에서 tmux 세션 실행

배경: 저는 Tilix를 기본 터미널 에뮬레이터로 사용합니다. Tilix 환경 설정(스크린샷 첨부)에서 Tilix가 시작될 때 다음 명령을 실행하도록 설정했습니다.

/usr/bin/zsh -c "if [[ $(tmux ls 2>/dev/null | grep -q -E '^main.*attached.*'; echo $?) -ne 0 ]]; then tmux attach -t main || tmux new -s main; else /usr/bin/zsh; fi"

Tilix 환경 설정

다음 사항을 확인합니다.

  • tmux 세션 이름 main이 다음과 같은 경우
    • 실패하면 다음과 같은 tmux 세션에 연결을 시도합니다.main
      • 실패하면 이름이 지정된 새 tmux 세션을 생성 main하고 연결합니다.
    • 그렇지 않으면 (성공한 경우) 일반을 시작하십시오.zsh

이 모든 복잡성이 발생하는 이유는 처음 tilix를 시작할 때 tmux가 실행되고 연결되어 시작되기 때문입니다. 어느새로운 tilix 세션또는새로운 타일릭스 창lauched는 main이라는 기존 tmux 세션을 생성하거나 연결을 시도하지 않습니다. (Tilix에는 자체 다중 창과 창이 있으므로 tmux 세션과 혼동하지 마십시오)

위 코드 블록을 압축할 수 있는지, 아니면 위 코드 블록의 더 나은 버전을 생각해낼 수 있는지 궁금합니다.

답변1

명령 대체는 약간 지나쳤지만 그 외에는 꽤 괜찮아 보입니다. 종료 코드를 사용하면 됩니다.if

^main.*attached.*패턴이 발견 되면 해당 패턴 ^main.*attached도 발견되고, 마찬가지로 긴 패턴이 발견되지 않으면 짧은 패턴도 발견되지 않습니다. 더 짧은 패턴의 일치가 더 빠를 수 있습니다.

/usr/bin/zsh -c "if ! tmux ls 2>/dev/null | grep -q -E '^main.*attached'; then tmux attach -t main || tmux new -s main; else /usr/bin/zsh; fi"

답변2

tmux가 충분히 새로운 경우 다음을 수행할 수 있습니다.

[ "$(tmux display -pt=main: '#{session_attached}' 2>/dev/null)" -gt 0 ] && exec tmux new -Asmain || exec zsh

관련 정보