Voglio eseguire un comando foo su un terminale e passare il risultato a un altro terminale. È possibile farlo?
Voglio eseguire un comando foo su un terminale e passare il risultato a un altro terminale. È possibile farlo?
Risposte:
Sì. Un'immagine che vale più di mille parole:
Quindi, devi reindirizzare l'output del tuo comando usando l' >
operatore a /dev/pts/#
. Puoi trovare #
usando who
o il w
comando. Se vuoi reindirizzare e gli errori, usa:
<command> >& /dev/pts/#
gnome-terminal
e rilevare il tty (usando il tty
comando) del nuovo terminale e infine inviare l'output ad esso.
Qualcosa del genere per il tuo $HOME/.bashrc
:
ng() { gnome-terminal -x sh -c "$*; bash"; }
Questo eseguirà un comando e mostrerà il risultato in una nuova finestra del terminale.
Esempi:
ng ls -l
ng echo foo
Modifica: per considerare gli alias $HOME/.bashrc
dall'uso questo invece:
ng() { gnome-terminal -x bash -ic "$*; bash"; }
quindi l'output di ls
dovrebbe essere colorato (grazie a Radu Rădeanu per questo suggerimento ).
type ls
ng type ls
ng() { gnome-terminal -x sh -c "$*; bash" ;}
dovrebbe essere migliore. E se stai usando xfce (xfce4-terminal come emulatore predefinito): ng() { xfce4-terminal -x sh -c "$*; bash" ;}
oppure puoi semplicemente eseguire qualsiasi emulatore predefinitong() { x-terminal-emulator -x sh -c "$*; bash";}