script tmux pour lancer plusieurs commandes


21

Comment puis-je écrire ce qui suit dans un script bash?

tmux # Start tmux session.
compass watch /path/to/project1/compass/ # Run the first process.
Ctrl + B, " # Split the pane.
compass watch /path/to/project2/compass/ # Run the second process.
Ctrl + B, D # Exit the session.

Réponses:


21
tmux \
    new-session  'compass watch /path/to/project1/compass/' \; \
    split-window 'compass watch /path/to/project2/compass/' \; \
    detach-client

La new-sessioncommande (qui crée une nouvelle tmuxsession) et la split-windowcommande (qui divise la fenêtre actuelle en deux volets) dans tmuxprend des commandes shell facultatives à exécuter. Le detach-clientfait l'évidence à la fin.

Si vous voulez une division horizontale (deux volets côte à côte), utilisez split-window -hla commande ci-dessus.

Lorsque vous envoyez plusieurs tmuxcommandes, tmuxvous devez les séparer par ;. Le ;doit être protégé du shell en le citant / en l'échappant ( ';', ";"ou \;), pour empêcher le shell de l'interpréter comme la fin de la tmuxcommande.

J'ai divisé le tout en lignes distinctes pour plus de lisibilité. Si vous faites cela dans un script (que je recommande), assurez-vous qu'il n'y a rien après la finale \sur chaque ligne.

Rattacher à la session avec tmux a, tmux attachou tmux attach-session(ce sont tous équivalents).

La tmuxsession se terminera une fois l'exécution des deux commandes terminée.


3

Cela n'a pas fonctionné pour moi (j'essayais de faire quelque chose comme 'ls -la'). Qu'est-ce que c'était:

tmux new-session -d bash
tmux split-window -h bash
#sends keys to first and second terminals
tmux send -t 0:0.0 "<my-first-command>" C-m
tmux send -t 0:0.1 "<my-second-command>" C-m
tmux -2 attach-session -d

Cela m'a permis d'exécuter des trucs assez génériques et même si ça a l'air moche, c'est assez fonctionnel.

Il suffit de le laisser ici au cas où d'autres personnes chercheraient la même chose.

Source: https://gist.github.com/kizzx2/4739236

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.