2013-10-31 1 views
2

작성 후 명령을 실행하는 데 새 세션을 가져 오는 데 문제가 있습니다.새 tmux 세션을 연 후 명령을 실행하는 방법

다음
new -A -s 'main' -n 'servers' 'ls' 

내가 TMUX 열 방법은 다음과 같습니다 :

set-window-option -g automatic-rename off 
set-option -g allow-rename off 
new -A -s 'main' -n 'servers' 'ls' # troubled line 
splitw -h -p 35 htop 
splitw -v 
splitw -v -t 1 
splitw -v -t 1 
neww -n 'irc' weechat-curses 
selectw -t 0 

이 내가 일하고 있어요 라인은 다음과 같습니다

.tmux.conf의 일부입니다
alias tux='TERM=screen-256color-bce tmux -f ~/.tmux.conf attach-session -t main' 

'ls'은 오류가 발생했음을 나타내야합니다. 만들어지지 않습니다. "top"으로 변경하면 정상적으로 작동하고 명령이 실행됩니다.

왜 톱은 작동합니까? 아니면 ls가 아닌 다른 명령입니까?

답변

5

top 종료 할 때까지 실행됩니다. ls은 현재 디렉토리의 내용을 인쇄 한 후 종료됩니다. 이로 인해 ls 실행되는 창을 닫습니다.

setw -t servers remain-on-exit on 

는 명령이 종료 한 후 닫는 '서버'라는 이름의 창을 유지해야하지만, 실행되는 창은 new-session 명령 이전에 존재하지 않는 사실에 의해 복잡하고 new-session 반환 한 후에는 할 수있다 setw 명령을 실행하기에는 너무 늦어야합니다 (시도 할 수도 있음). , 당신의 마지막 코멘트에

new -A -s 'main' -n 'servers' 'ls' # troubled line 
set -t main set-remain-on-exit on 
neww -n 'servers' ls 

을 바탕으로 위의 내용을 무시하고 new 명령을 대체 :

대신, 그 명령이 존재 후에 남아 기본은 윈도우 인 새로운 세션을 생성

new -A -s 'main' -n 'servers' 
send-keys -t servers.0 ls Enter 

이 누구의 명령을 정기적 쉘입니다 일반 창을 만들지 만 다음 첫 번째 쉘 프롬프트에서 ls 명령을 입력 시뮬레이션 해당 디렉토리의 파일 목록을 제공합니다. ls이 완료되면 쉘에 다시 돌아오고 쉘은 쉘 자체가 완료 될 때까지 계속 존재하게됩니다.

+0

이것은 제대로 작동하지 않습니다. 서버라고하는 창을 사용하여 초기 기본 세션을 만듭니다. 그러나 그것이 열리면 창은 죽었습니다. 나는'respawnw -t servers'에 대해 tacking을 시도했지만, 다중 창 경고를 가진 servers라고 불리는 두 번째 창을 만들었습니다. – doremi

+0

내 업데이트를 참조하십시오. 나는 또한 원래의 오타가 있는데,'new' 명령은'new -A -s 'main'을 읽어야 만합니다. – chepner

+0

내가 원하는 것을 달성하기 위해'send-keys'를 어떻게 사용하는지 알아 냈습니다. 명령에서 나오는 결과를 볼 수 있으면 좋지만 작동하는 것은 좋지만 명령이 발행 된 것을 볼 수 있기 때문에 내가 원하는 것만 큼 깨끗하지는 않습니다. 또한, 나는 -t 플래그에 대해 점 표기법 ('window.pane #')을 할 수 있다는 것을 몰랐다. 멋지다. – doremi