Napisz polecenie w jednym terminalu, zobacz wynik na drugim


Odpowiedzi:


46

Tak to jest. Obraz wart tysiąca słów:

terminal radu

Musisz przekierować dane wyjściowe polecenia za pomocą >operatora do /dev/pts/#. Możesz znaleźć #za pomocą wholub wpolecenia. Jeśli chcesz przekierować i błędy, użyj:

<command> >& /dev/pts/#

dzięki. ale jeśli inny terminal nie istnieje. co powinniśmy zrobić? Lub lepiej powiedzieć, przekazać to nowszemu?
Mohammad Reza Rezwani,

5
Prawdopodobnie potrzebujesz do tego skryptu: skrypt przyjmie jako argument twoje polecenie, a następnie otworzy nowy gnome-terminali wykryje tty (za pomocą ttypolecenia) nowego terminala, a na koniec wyśle ​​do niego dane wyjściowe.
Radu Rădeanu,

8

Coś takiego dla twojego $HOME/.bashrc:

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

Uruchomi to polecenie i wyświetli wynik w nowym oknie terminala.

Przykłady:

ng ls -l
ng echo foo

Edycja: Aby wziąć pod uwagę aliasy, $HOME/.bashrcużyj tego zamiast tego:

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

następnie wyjście lspowinno być pokolorowane (dzięki Radu Rădeanu za tę podpowiedź ).


Spowoduje to uruchomienie polecenia bezpośrednio w nowym terminalu.
Radu Rădeanu,

Tak, ale jaka jest zaleta uruchomienia go najpierw w starym terminalu?
TuKsn

Brak korzyści ... ale w rzeczywistości ta odpowiedź na ten komentarz .
Radu Rădeanu,

4
Zrozumiesz, czy uciekniesz, type lsa potem ng type ls:)
Radu Rădeanu,

1
jeśli funkcja zapisu w jednym wierszu w bashrc, może potrzebować średnika, aby go zakończyć, lub napotkasz błąd „nieoczekiwany koniec pliku”. tak ng() { gnome-terminal -x sh -c "$*; bash" ;}powinno być lepiej. A jeśli używasz xfce (xfce4-terminal jako domyślny emulator): ng() { xfce4-terminal -x sh -c "$*; bash" ;}lub możesz po prostu uruchomić dowolny domyślny emulatorng() { x-terminal-emulator -x sh -c "$*; bash";}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.