Как создать скрипт Bash, который открывает tmux, запускает несколько строк команд, а затем отключается от tmux?

Как создать скрипт Bash, который открывает tmux, запускает несколько строк команд, а затем отключается от tmux?

Я пытаюсь сделать скрипт Bash, который открывает tmux и запускает несколько строк команд, а затем отсоединяет его, чтобы после его завершения я оказался в терминале. Как мне решить эту проблему? Все перепробовал.

≈#!/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

Пожалуйста, дайте мне знать, если это вам подойдет.

Связанный контент