Scrivi il comando in un terminale, vedi il risultato sull'altro


35

Voglio eseguire un comando foo su un terminale e passare il risultato a un altro terminale. È possibile farlo?


4
Guarda anche in tmux e screen , entrambi i quali ti consentono di assumere il mirroring o semplicemente eseguire comandi su altre sessioni.
Kevin,

Risposte:


46

Sì. Un'immagine che vale più di mille parole:

terminale di radu

Quindi, devi reindirizzare l'output del tuo comando usando l' >operatore a /dev/pts/#. Puoi trovare #usando whoo il wcomando. Se vuoi reindirizzare e gli errori, usa:

<command> >& /dev/pts/#

Grazie. ma se non esiste un altro terminale. cosa dovremmo fare? O meglio dire passarlo a quello più recente?
Mohammad Reza Rezwani,

5
Probabilmente avrai bisogno di uno script per farlo: lo script prenderà come argomento il tuo comando, quindi dovrebbe aprirne uno nuovo gnome-terminale rilevare il tty (usando il ttycomando) del nuovo terminale e infine inviare l'output ad esso.
Radu Rădeanu,

8

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/.bashrcdall'uso questo invece:

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

quindi l'output di lsdovrebbe essere colorato (grazie a Radu Rădeanu per questo suggerimento ).


Questo eseguirà il comando direttamente nel nuovo terminale.
Radu Rădeanu,

Sì, ma qual è il vantaggio di eseguirlo per primo nel vecchio terminale?
TuKsn,

Nessun vantaggio ..., ma in realtà questa risposta a questo commento .
Radu Rădeanu,

4
type lsng type ls
Capirai

1
se scrivi la funzione in una riga in bashrc, forse hai bisogno di un punto e virgola per terminarla, o incontrerai un errore "fine del file imprevista". quindi 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";}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.