tmux-Skript zum Starten mehrerer Befehle

21

Wie kann ich Folgendes in ein Bash-Skript schreiben?

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
quelle

Antworten:

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

Der new-sessionBefehl (der eine neue tmuxSitzung erstellt) und der split-windowBefehl (der das aktuelle Fenster in zwei Bereiche unterteilt) in tmuxerfordern optionale Shell-Befehle. Das detach-clientmacht das Offensichtliche am Ende.

Wenn Sie eine horizontale Aufteilung wünschen (zwei Fenster nebeneinander), verwenden Sie split-window -hden obigen Befehl.

Wenn Sie mehrere tmuxBefehle an senden , müssen tmuxSie diese durch trennen ;. Die ;Anforderungen aus der Hülle geschützt werden , indem unter Angabe / Entkommen ( ';', ";"oder \;), aus der Schale zu stoppen , es als das Ende des Interpretieren tmuxBefehls.

Ich habe das Ganze zur besseren Lesbarkeit in separate Zeilen aufgeteilt. Wenn Sie dies in einem Skript tun (was ich empfehle), stellen Sie sicher, dass \in jeder Zeile nach dem Finale nichts steht .

Verbinden Sie die Sitzung erneut mit tmux a, tmux attachoder tmux attach-session(dies sind alle gleichbedeutend).

Die tmuxSitzung wird beendet, sobald beide Befehle ausgeführt wurden.

Kusalananda
quelle
3

Das hat bei mir nicht funktioniert (ich habe versucht, so etwas wie 'ls -la' zu machen). Was tat, war:

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

Dadurch konnte ich ziemlich allgemeines Material ausführen und obwohl es hässlich aussieht, ist es ziemlich funktional.

Lassen Sie es einfach hier, falls andere Leute das Gleiche suchen.

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

user27221
quelle