Как отправить вывод с одного терминала на другой без создания нового канала или файла

Одна из возможностей - использовать sed :

sed 's/complete/complete\n/g' filename

Чтобы напрямую заменить содержимое файла, используйте sed -i ... .
Чтобы сделать резервную копию исходного файла с расширением .bak , используйте sed -i.bak ... .
Чтобы дать более точный ответ, ваш вопрос должен быть более точным.

26
11.02.2016, 16:56
5 ответов

Если оба терминала принадлежат одному пользователю, вы можете отправить свой вывод на виртуальное устройство, которое используется как tty конкретного терминала.

Таким образом, вы можете использовать вывод из w , который включает информацию TTY, и писать прямо на это устройство.

ls > /dev/pts/7

(Если устройство, указанное в w , было pts / 7)

Другой вариант - использовать номер процесса, подключенного к этому устройству. Отправьте свой вывод на / proc / <номер процесса> / fd / 1 .

ls > /proc/5555/fd/1

Предположим, что номер процесса, который вы обнаружили на этом терминале, - 5555.

Обратите внимание, что эта прямая запись разрешена только в том случае, если пользователь, который пытается писать, является тем же пользователем, который владеет другим терминалом ].

30
27.01.2020, 19:39

Вы можете использовать команду write .

Как прокомментировал @MelBurslan, если разрешение на запись отключено, сначала выполните:

 $ mesg y

From man mesg

OPTIONS

y Разрешить доступ на запись к вашему терминалу.

Использование записи:

$ write username tty

например. Отправьте вывод ls на другой терминал.

$ w
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user     :0       :0               08:15   ?xdm?   7:37   0.25s init --user
user     pts/0    :0               08:19    1.00s  0.09s  0.01s w
user     pts/12   :0               08:50   54.00s  0.03s  0.03s bash

$ ls | write username pts/12
15
27.01.2020, 19:39

Вы можете использовать wall также:

$ wall "Message here"
-3
27.01.2020, 19:39

Я нашел похожий метод.

На первом терминале:

 $ tty
 /dev/pts/0
 $ <no need to run any command here, just see the output>

На втором терминале:

$ ls > /dev/pts/0

Теперь вы получаете вывод на первом терминале

11
27.01.2020, 19:39

вы можете писать на TTY терминала; например:

на клемме 1:

$ tty 
ttys000

на клемме 2:

$ tty
ttys029

$ exec &> >(tee >(cat >&/dev/ttys000))
ls 

Вывод будет отображаться на обоих терминалах в реальном -времени даже во время ввода.

Работает на Linux и macOS. Путь TTY для macOS — /dev/{number}, а для Linux — /dev/pts/{number}

.
1
27.01.2020, 19:39

Теги

Похожие вопросы