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 $1
como 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/$1
já existe e não executar o mkdir
comando 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ê.