세션에 연결되어 있을 때 Tmux에서 명령을 어떻게 실행하나요?
즉시 명령을 첨부하여 실행하고 싶습니다.
문서를 읽었지만 키만 전송되는데 이는 내 요구 사항에 맞지 않습니다.
답변1
실행 중인 tmux 세션에 연결하고 특정 명령을 실행하는 새 창을 생성할 수 있습니다.
tmux attach \; new-window vim
이것은 기존 창에서 vim을 생성하지 않는다는 점에 유의하십시오. 이를 수행하는 도구가 없으면 실제로 의미가 없습니다. @Falcon Momot가 지적했듯이 기존 창은 무엇이든 실행할 수 있습니다. 문제가 발생합니다. 메서드 명령은 "Send Key"입니다.
답변2
나는 이 문제에 대한 해결책을 찾고 있습니다. 이는 "set-buffer" 및 "paste-buffer" 명령을 사용하여 수행할 수 있습니다.
tmux att -t <session-name> \; set-buffer "<command>^M" \; paste-buffer
완전한 예는 다음과 같습니다.
# let's start with two sessions running bash
tmux new -s theOtherSession \; detach
tmux new -s astropanic \; rename-window main-window \; detach
# attach to the 'astropanic' session, run a directory listing, output
# current datetime, then detach. Note for carriage return (^M) type ^V^M
tmux att -t astropanic \; find-window main-window \; set-buffer "ls;date^M" \; paste-buffer \; detach
# reconnect to check status
tmux att -t astropanic
답변3
tmux 명령 또는 쉘/OS 명령 중 어떤 명령을 실행하려는지 명확하지 않습니다. 각각의 예는 다음과 같습니다.
#!/bin/bash
cd
# give the session a name; makes it easier to reuse code lines
_SNAME=Generic
# start a whole new tmux session
tmux new-session -s $_SNAME -d -x 140 -y 35
# can set tmux options
tmux set-option -t $_SNAME default-path /opt/foo/build
# create a new window that's just a shell
tmux new-window -t $_SNAME -n build -d
# create a new window that's running a program
tmux new-window -t $_SNAME -n vim -d vim
이렇게 하면 세션이 연결되지 않은 상태로 유지됩니다. 이를 추가하려면 쉘 스크립트 끝에 다음 행을 추가하십시오.
# attach to the new session
tmux attach -t $_SNAME
답변4
이것은 Tmux를 시작하거나 연결하고 그 안에서 명령을 실행하는 작은 스크립트입니다. 명령이 실행되면 Tmux가 종료됩니다.
#!/bin/sh -x
SESSION_NAME=foo
tmux has-session -t $SESSION_NAME 2>/dev/null
if [ $? -ne 0 ]
then
tmux new-session -d -s $SESSION_NAME "$*"
fi
exec tmux attach -t $SESSION_NAME
사용 예:
$ ./script-above 'echo hello world && sleep 10'