Question Exécuter la commande dans un terminal et obtenir la sortie dans un autre terminal, il est possible? Comment? [fermé]


Exécuter la commande dans un terminal et obtenir la sortie dans un autre terminal


1
2017-11-28 12:26


origine


Pouvez-vous être plus précis avec plus d'informations? Vous ne savez pas exactement ce que vous essayez d’atteindre avec la version Ubuntu? ... - AzkerM
Quel rôle joue serveur Principal jouez ici? - guntbert


Réponses:


Possible avec quelque chose dit named pipe.

Voici une démonstration de base:

  1. Fenêtre de terminal ouverte 1.
  2. Type mkfifo /tmp/myPipe et appuyez sur Entrée
  3. Type echo "Hello Named Pipe" > /tmp/myPipe & et appuyez sur Entrée
  4. Terminal ouvert 2
  5. Courir cat /tmp/myPipe pour voir la sortie

enter image description here

Une autre solution possible est d'avoir un screen session en cours, et attachez / détachez-le.


3
2017-11-28 13:53



Bonne idée d'utiliser l'écran. - glenn jackman


Sur le terminal récepteur, exécutez la commande w. Cela imprimera une liste des sessions en cours d'exécution, par ex. quand je lance la commande, elle imprime:

 13:39:22 up 11 min,  3 users,  load average: 0.32, 0.50, 0.33
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
sebastia tty8     :0               13:27   11:52  21.10s  0.31s cinnamon-session --session cinnamon
sebastia pts/1    :0               13:36   10.00s 23.90s  0.29s sudo apt-get update
sebastia pts/3    :0               13:37    1.00s  0.11s  0.01s w

Celui dans lequel vous êtes est bien sûr celui avec la commande w (Répertorié dans la colonne WHAT).

Dans cette liste, vous trouverez également une section intitulée TTY. Vous y verrez le nom du fichier tampon du terminal, par ex. pts/3 pour celui que j'ai exécuté w dans.

Maintenant, supposons que je veuille exécuter la commande exécutée dans pts1 pour imprimer sa sortie sur pts3. Cela peut être fait comme ça (en utilisant la commande ci-dessus):

sudo apt-get update > /dev/pts/3

Cela transmettra toutes les sorties à pts3. Cependant, il ne faudra rien contribution De là. Malheureusement, je n'ai pas réussi à trouver une solution pour cela. (Ajouts bienvenus)


Selon ce que vous essayez d’atteindre, un multiplexeur de terminal, tel que Tmux ou GNU Screen, peut être mieux adapté à cette tâche. par exemple. avec Tmux, procédez comme suit:

Démarrer Tmux avec la commande tmux. Vous serez déposé sur un nouveau shell. Exécutez votre commande là-bas.

Dans le terminal de réception, exécutez tmux a se connecter à la session Tmux existante. Vous pouvez maintenant interagir avec ce terminal.

Si vous le souhaitez, vous pouvez vous déconnecter de Tmux à tout moment avec Ctrl+B, suivi par . Vous pouvez vous rattacher de n'importe où avec tmux a.


2
2017-11-28 13:03