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.
GTS Joe
la source

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.

Kusalananda
la source
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

user27221
la source