Schreibbefehl in ein Terminal, siehe Ergebnis auf dem anderen


35

Ich möchte einen Befehl foo auf einem Terminal ausführen und das Ergebnis an ein anderes Terminal übergeben. Ist das möglich?


4
Schauen Sie sich auch tmux und screen an , mit denen Sie Befehle für andere Sitzungen übernehmen, spiegeln oder einfach ausführen können.
— Kevin

Antworten:


46

Ja ist es. Ein Bild, das mehr als tausend Worte sagt:

Radus Terminal

Sie müssen also die Ausgabe Ihres Befehls mithilfe des >Operators an umleiten /dev/pts/#. Sie können #mit whooder wBefehl finden. Wenn du und die Fehler umleiten willst, benutze:

<command> >& /dev/pts/#

Vielen Dank. aber wenn das andere terminal nicht existiert. was wir tun sollten? Oder besser gesagt, es an eine neuere weitergeben?
— Mohammad Reza Rezwani

5
Dazu benötigen Sie wahrscheinlich ein Skript: Das Skript verwendet Ihr Kommando als Argument, sollte dann ein neues öffnen gnome-terminalund das tty (using- ttyKommando) des neuen Terminals erkennen und schließlich die Ausgabe an dieses senden.
— Radu Rădeanu

8

So etwas für Ihre $HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

Dadurch wird ein Befehl ausgeführt und das Ergebnis in einem neuen Terminalfenster angezeigt.

Beispiele:

ng ls -l
ng echo foo

Bearbeiten: Um Aliase aus der $HOME/.bashrcVerwendung zu berücksichtigen, verwenden Sie stattdessen Folgendes :

ng() { gnome-terminal -x bash -ic "$*; bash"; }

dann sollte die Ausgabe von lsfarbig sein (danke an Radu Rădeanu für diesen Hinweis ).


Dadurch wird der Befehl direkt im neuen Terminal ausgeführt.
— Radu Rădeanu

Ja, aber was ist der Vorteil, wenn Sie es zuerst im alten Terminal ausführen?
— TuKsn

Kein Vorteil ..., aber in der Tat diese Antwort auf diesen Kommentar .
— Radu Rădeanu

4
Sie werden verstehen, wenn Sie laufen type lsund dann ng type ls:)
— Radu Rădeanu

1
Wenn Sie eine Funktion in eine Zeile in bashrc schreiben, benötigen Sie möglicherweise ein Semikolon, um sie zu beenden, oder Sie werden auf einen Fehler "Unerwartetes Dateiende" stoßen. so ng() { gnome-terminal -x sh -c "$*; bash" ;}sollte es besser sein. Und wenn Sie xfce (xfce4-terminal als Standardemulator) verwenden: ng() { xfce4-terminal -x sh -c "$*; bash" ;}oder Sie können einfach einen Standardemulator verwendenng() { x-terminal-emulator -x sh -c "$*; bash";}
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.