Estoy intentando crear un script Bash que abra tmux y ejecute algunas líneas de comandos y luego lo separe para terminar en mi terminal una vez terminado. ¿Cómo lo soluciono? Lo intenté todo.
≈#!/bin/bash
cd ~/data
mkdir $1
Esto es lo que obtuve hasta ahora. Cuando ejecuto mi script Bash escribo:
myScript folder_name https://myurl.com
Y ahora quiero iniciar una sesión tmux y ejecutar:
screamingfrogseospider \
--crawl $2 \
--headless \
--save-crawl \
--output-folder ~/data/$1 \
--timestamped-output \
Pero, ¿cómo hago un script que abre tmux y ejecuta estas líneas y cierra también ejecuta tmux separado para terminar en la ventana de mi terminal?
Respuesta1
Esto debería 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"
Esto crea una sesión tmux con el nombre establecido en la variable $sessname
; también puede usarlo $1
como nombre de sesión si lo desea. Luego toma sus 2 argumentos, crea una sesión tmux con el nombre de pila y ejecuta el comando.
Para que el script sea más resistente, debe agregar comprobaciones para ver si ~/data/$1
ya existe y no ejecutar el mkdir
comando si existe. También puedes comprobar que tiene 2 parámetros con el formato correcto, etc.
De forma predeterminada, no se adjunta a la sesión, por lo que regresa a su shell. Descomente la última línea para adjuntar o ejecútelo manualmente: (reemplace newsess si cambia el valor de $sessname
)
tmux attach -t newsess
Por favor, dígame si le funciona.