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.

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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.