Wie kann ich einen Befehl in Tmux ausführen, wenn ich eine Verbindung zu einer Sitzung herstelle?
Ich möchte anhängen und sofort einen Befehl ausführen.
Ich habe die Dokumente gelesen, aber nur Sendeschlüssel gefunden, die nicht meinen Anforderungen entsprechen.
vi
.Antworten:
Sie können eine Verbindung zu einer laufenden tmux-Sitzung herstellen und ein neues Fenster öffnen, in dem ein bestimmter Befehl ausgeführt wird:
Beachten Sie, dass dies nicht zu vim im Fenster vor dem Beenden führt - es gibt keine Möglichkeit, dies zu tun, es ist nicht wirklich sinnvoll: Wie @Falcon Momot betont, kann in einem vorhandenen Fenster alles ausgeführt werden, die einzige Möglichkeit, dies zu tun Befehle ist "Schlüssel senden".
quelle
\;
ist ein Escape-Semikolon, das hier verwendet wird, um zweitmux
Befehle zu trennen (ohne das Semikolonnew-windows
zu maskieren , wird als behandelt ein neuer Shell-Befehl).Probieren Sie dies aus, um beispielsweise mutt auszuführen
Es überprüft das Vorhandensein einer 'Mail'-Sitzung, die ausgeführt wird. Wenn nicht, erstellt es eine und startet den Anwendungs-Mutt. schließlich hängt es daran
quelle
Ich suchte nach einer Lösung für genau dieses Problem. Dies kann mit den Befehlen 'set-buffer' und 'paste-buffer' erfolgen
Hier ist ein vollständiges Beispiel:
quelle
carriage return
was du gesagt hast. Ich musste die Eingabetaste wie folgt senden :tmux attach -t "$1" \; set-buffer "ls;date" \; paste-buffer \; send-keys C-m
.DISABLE_AUTO_TITLE="true"
zu Ihrem Shell-Profil beibehalten (dies ist wichtig). Verwenden Sie dieses Fenster dann nur, um Befehle beim Verbinden auszuführen. Ich verwende es, um eine Verbindung zu einem SSH-Host herzustellen und dann zu Beginn des Tages mein Kerberos-Ticket zu erhalten.ssh hostname -t "tmux a -t 0 \; select-window -t cmd \; set-buffer \"kinit -f -l 1d -r 30d^M\" \; paste-buffer \;"
. Geben Sie ihm der Einfachheit halber einen schönen Namen und speichern Sie ihn als Skript in Ihrem Pfad. :) Beachten Sie auch, dass ^ M eingefügt werden sollte, indem Sie Cv und dann Enter in Ihrem Editor drücken.Mir ist nicht klar, welche Art von Befehl Sie ausführen möchten, einen tmux-Befehl oder einen Shell / OS-Befehl. Hier ist jeweils ein Beispiel:
Dadurch bleibt die Sitzung nicht verbunden. Wenn Sie auch daran anhängen möchten, fügen Sie diese Zeile am Ende des Shell-Skripts hinzu:
quelle
Hier ist ein kleines Skript, das Tmux startet oder an Tmux anfügt und einen Befehl darin ausführt. Sobald der Befehl ausgeführt wurde, wird Tmux beendet.
Anwendungsbeispiel:
quelle
Ich mache das gerne:
Und Renn
/Users/xxx/bin/thisscript tmuxed
quelle