Écrire une commande dans un terminal, voir le résultat sur un autre


35

Je veux exécuter une commande foo sur un terminal et transmettre le résultat à un autre terminal. Est-il possible de faire cela ?


4
Consultez également tmux et screen , qui vous permettent tous deux de prendre en charge, de mettre en miroir ou d’exécuter des commandes sur d’autres sessions.
— Kevin

Réponses:


46

Oui, ça l'est. Une image vaut mille mots:

le terminal de radu

Donc, vous devez rediriger la sortie de votre commande en utilisant >operator to /dev/pts/#. Vous pouvez trouver en #utilisant whoou wcommande. Si vous voulez rediriger les erreurs, utilisez:

<command> >& /dev/pts/#

Merci. mais si l'autre terminal n'existe pas. Que devrions-nous faire? Ou mieux dire de le passer à un plus récent?
— Mohammad Reza Rezwani

5
Vous aurez probablement besoin d’un script pour le faire: le script prendra comme argument votre commande devrait ensuite ouvrir un nouveau gnome-terminalet détecter le tty (utilisant la ttycommande) du nouveau terminal et finalement lui envoyer le résultat.
— Radu Rădeanu

8

Quelque chose comme ça pour votre $HOME/.bashrc:

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

Cela lancera une commande et affichera le résultat dans une nouvelle fenêtre de terminal.

Exemples:

ng ls -l
ng echo foo

Edit: Pour prendre en compte les alias $HOME/.bashrcutilisés, utilisez plutôt ceci:

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

alors la sortie de lsdevrait être colorée (merci à Radu Rădeanu pour cet indice ).


Cela exécutera la commande directement dans le nouveau terminal.
— Radu Rădeanu

Oui, mais quel est l'avantage de le lancer d'abord dans l'ancien terminal?
— TuKsn

Aucun avantage ..., mais en fait cette réponse à ce commentaire .
— Radu Rădeanu

4
Vous comprendrez si vous courrez type lset ensuite ng type ls:)
— Radu Rădeanu

1
Si vous écrivez une fonction sur une ligne dans bashrc, vous aurez peut-être besoin d'un point-virgule pour la terminer ou vous rencontrerez une erreur "fin inattendue du fichier". donc ng() { gnome-terminal -x sh -c "$*; bash" ;}devrait être mieux. Et si vous utilisez xfce (xfce4-terminal en tant qu'émulateur par défaut): ng() { xfce4-terminal -x sh -c "$*; bash" ;}ou vous pouvez simplement exécuter n'importe quel émulateur par défautng() { x-terminal-emulator -x sh -c "$*; bash";}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.