Como faço um script Bash que abre o tmux, executa várias linhas de comandos e depois se desconecta do tmux?

Como faço um script Bash que abre o tmux, executa várias linhas de comandos e depois se desconecta do tmux?

Estou tentando fazer um script Bash que abra o tmux e execute algumas linhas de comandos e, em seguida, desanexe-o para que eu acabe no meu terminal depois de terminar. Como faço para resolver isso? Tentei de tudo.

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

Isso é o que consegui até agora. Ao executar meu script Bash, digito:

myScript folder_name https://myurl.com

E agora quero iniciar uma sessão tmux e executar:

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

Mas como faço para fazer um script que abre o tmux e executa essas linhas e fecha também executa o tmux desanexado para que eu acabe na janela do meu terminal?

Responder1

Isso deve funcionar:

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

Isso cria uma sessão tmux com o nome definido na variável $sessname- você também pode usar $1como nome de sessão, se desejar. Em seguida, ele pega seus 2 argumentos, cria uma sessão tmux com o nome fornecido e executa o comando.

Para tornar o script mais resiliente, você deve adicionar verificações para ver se ~/data/$1já existe e não executar o mkdircomando se existir. Você também pode verificar se possui 2 parâmetros com o formato correto, etc.

Por padrão, ele não é anexado à sessão, então você retorna ao seu shell. Remova o comentário da última linha a ser anexada ou execute-a manualmente: (substitua newsess se você alterar o valor de $sessname)

tmux attach -t newsess

Por favor, deixe-me saber se isso funciona para você.

informação relacionada