Je suis juste en train de batifoler sur mon terminal (terminal Gnome). Je me demandais s'il y avait un moyen d'envoyer la sortie d'un terminal à un autre sans avoir à créer un nouveau fichier ou pipe.
par exemple: sur le premier terminal, je cours ls
et je veux que sa sortie soit affichée sur le second terminal (avec ou sans utiliser de commande sur le second)
command-line
Edward Torvalds
la source
la source
ls
et souhaite que sa sortie soit affichée sur le deuxième terminal (avec ou sans aucune commande sur le second)Réponses:
Si les deux terminaux appartiennent au même utilisateur, vous pouvez envoyer votre sortie au périphérique virtuel qui est utilisé comme terminal du terminal particulier.
Vous pouvez donc utiliser la sortie de
w
, qui inclut les informations TTY, et écrire directement sur cet appareil.(Si l'appareil mentionné par
w
était pts / 7)Une autre option consiste à utiliser le numéro d'un processus connecté à ce périphérique. Envoyez votre sortie à
/proc/<process number>/fd/1
.En supposant que le numéro de processus que vous avez trouvé qui s'exécute dans ce terminal est 5555.
Notez que cette écriture directe n'est autorisée que si l'utilisateur qui tente d'écrire est le même utilisateur qui possède l'autre terminal .
la source
/dev/pts/7
ou similaire avec law
commande, mais la deuxième façon fonctionne pour moi/proc/XXX/fd/1
est généralement un lien logiciel vers le périphérique de base. Essayez d'utiliserls -l /proc/XXXX/fd/1
et voyez ce qu'il pointe. Cela a-t-il un rapport avec ce qui est apparu dans law
commande?w
avec le commandement/proc/XXX/fd/0
Je fais le lienw
avec le commandement/dev/pts/7
/proc/XXX/fd/1
c'est censé être un lien logiciel vers n'importe quel périphérique que law
commande affiche. Quelle est la sortie dels -l
celui-ci?tty
(uniquement le courant) ouwho
(tous).Vous pouvez utiliser la
write
commande.Comme l'a commenté @MelBurslan, si l'autorisation d'écriture est désactivée, exécutez d'abord:
De
man mesg
Utilisation de l'écriture:
Par exemple, envoyer la
ls
sortie à un autre terminal.la source
w
commande estedward tty2 19:53 6:05 2:48 23.12s firefox
et si j'écrisls | write edward tty2
je n'obtiens aucune sortie mais un bip sonoreedwardd
place deedward
?you have turned write permission off
mesg y
commande sur le terminal cible, avant d'exécuter la commandeJ'ai trouvé une méthode similaire.
Sur le premier terminal :
Sur le deuxième terminal :
Maintenant, vous obtenez la sortie sur le premier terminal
la source
tail -f
au lieu decat
pourrait être utileUtilisez la
tty
commande dans chaque terminal pour les identifier:En supposant que ces ATS, pour rediriger la sortie standard du premier vers le second, exécutez ceci dans le premier terminal:
Pour restaurer le comportement par défaut stdout de pts / 0:
Voir cette vidéo pour une démonstration.
la source
vous pouvez écrire sur le TTY du terminal; par exemple:
dans le terminal 1:
dans la borne 2:
La sortie s'affichera dans les deux terminaux en temps réel, même lorsque vous tapez.
Fonctionne sur linux et macOS. Le chemin macOS TTY est
/dev/{number}
alors que sous Linux c'est/dev/pts/{number}
la source
exec &> >(tee >(cat >&/dev/ttys000))
n'existe pas, ce qui rend impossible la saisie.tty
sera quelque chose comme/dev/pts/0
exec &> >(tee >(cat >&/dev/pts/1))
. Aucune combinaison de touches de contrôle (ctrl + c) ne fonctionne. Je dois tuer le terminal pour sortirVous pouvez
wall
également utiliser :la source
wall
(abréviation de "écrire tout"), car il écrit dans chaque session tty connectée, y compris celle à partir de laquelle vous envoyez. À la place, l'utilisationwrite
permet de déclarer un tty spécifique.