tmux를 열고 여러 줄의 명령을 실행한 다음 tmux에서 분리하는 Bash 스크립트를 어떻게 만드나요?

tmux를 열고 여러 줄의 명령을 실행한 다음 tmux에서 분리하는 Bash 스크립트를 어떻게 만드나요?

tmux를 열고 몇 줄의 명령을 실행한 다음 분리하여 완료 후 터미널에 접속하는 Bash 스크립트를 만들려고 합니다. 어떻게 해결하나요? 모든 것을 시도했습니다.

≈#!/bin/bash
cd ~/data
mkdir $1

이것이 내가 지금까지 얻은 것입니다. Bash 스크립트를 실행할 때 다음을 입력합니다.

myScript folder_name https://myurl.com

이제 tmux 세션을 시작하고 다음을 실행하고 싶습니다.

screamingfrogseospider  \
--crawl $2  \
--headless  \
--save-crawl  \
--output-folder ~/data/$1  \
--timestamped-output \

하지만 tmux를 열고 이 줄을 실행하고 닫으면 tmux가 분리되어 실행되어 터미널 창에 표시되는 스크립트를 어떻게 만들 수 있습니까?

답변1

이것은 작동합니다:

#!/bin/bash
sessname="newsess"

cd ~/data
mkdir "$1"

# Create a new session named "$sessname", and run command
tmux new-session -d -s "$sessname"
tmux send-keys -t "$sessname" "screamingfrogseospider --crawl $2 --headless --save-crawl --output-folder ~/data/$1 --timestamped-output" Enter

# Attach to session named "$sessname"
#tmux attach -t "$sessname"

그러면 변수에 설정된 이름으로 tmux 세션이 생성됩니다 . 원하는 경우 세션 이름으로 $sessname사용할 수도 있습니다 . $1그런 다음 2개의 인수를 사용하여 지정된 이름으로 tmux 세션을 생성하고 명령을 실행합니다.

스크립트의 탄력성을 높이려면 ~/data/$1이미 존재하는지 확인하는 검사를 추가해야 하며, mkdir존재하는 경우 명령을 실행하지 않아야 합니다. 또한 올바른 형식 등의 매개변수 2개가 있는지 확인할 수도 있습니다.

기본적으로 세션에 연결되지 않으므로 셸로 돌아갑니다. 첨부할 마지막 줄의 주석 처리를 제거하거나 수동으로 실행하십시오. (값을 변경하는 경우 newsess를 바꾸십시오 $sessname)

tmux attach -t newsess

그것이 당신에게 효과가 있는지 알려주세요.

관련 정보