Я просто дурачусь на своем терминале (терминале Gnome). Мне было интересно, есть ли способ отправить вывод одного терминала на другой без необходимости создавать новый файл или канал.
например: на первом терминале я запускаю ls
и хочу, чтобы его вывод отображался на втором терминале (с использованием или без использования какой-либо команды на втором)
command-line
Эдвард Торвальдс
источник
источник
ls
и хочу, чтобы его вывод отображался на втором терминале (с использованием или без использования какой-либо команды на втором)Ответы:
Если оба терминала принадлежат одному и тому же пользователю, вы можете отправить свой вывод на виртуальное устройство, которое используется как tty конкретного терминала.
Таким образом, вы можете использовать вывод из
w
, который включает в себя информацию TTY, и писать прямо на это устройство.(Если упомянутое устройство
w
было pts / 7)Другой вариант - использовать номер процесса, подключенного к этому устройству. Отправьте свой вывод на
/proc/<process number>/fd/1
.Предполагая, что номер процесса, который вы нашли и который работает в этом терминале, равен 5555.
Обратите внимание, что прямая запись разрешена только в том случае, если пользователь, пытающийся выполнить запись, является тем же пользователем, которому принадлежит другой терминал .
источник
/dev/pts/7
или схоже сw
командой, но у меня работает второй способ/proc/XXX/fd/1
Обычно это мягкая ссылка на базовое устройство. Попробуйте использоватьls -l /proc/XXXX/fd/1
и посмотреть, на что он указывает. Имеет ли это какое-либо отношение к тому, что появилось вw
команде?w
команду с/proc/XXX/fd/0
Я связываюw
команду с/dev/pts/7
/proc/XXX/fd/1
предполагается, что это мягкая ссылка на любое устройство,w
отображаемое командой. Каков выходls -l
на это?tty
(только текущий) илиwho
(все).Вы можете использовать
write
команду.Как заметил @MelBurslan, если разрешение на запись отключено, сначала выполните:
От
man mesg
Использование записи:
Например, отправить
ls
вывод на другой терминал.источник
w
команды являетсяedward tty2 19:53 6:05 2:48 23.12s firefox
и если я пишу ,ls | write edward tty2
я не получаю никакого вывода , но звуковой сигналedwardd
вместоedward
?you have turned write permission off
mesg y
команду на целевом терминале, прежде чем запускать командуЯ нашел похожий метод.
На первом терминале :
На втором терминале :
Теперь вы получаете вывод на первый терминал
источник
tail -f
вместо того,cat
чтобы быть полезнымИспользуйте
tty
команду в каждом терминале, чтобы идентифицировать их:Предполагая, что эти TTY, чтобы перенаправить стандартный вывод первого на второй, запустите это в первом терминале:
Чтобы восстановить стандартный вывод поведения pts / 0:
Смотрите это видео для демонстрации.
источник
Вы можете написать в TTY терминала; например:
в терминале 1:
в терминале 2:
Вывод будет отображаться на обоих терминалах в режиме реального времени даже при вводе.
Работает на Linux и MacOS. MacOS TTY путь в
/dev/{number}
то время как в Linux это/dev/pts/{number}
источник
exec &> >(tee >(cat >&/dev/ttys000))
не существует, что делает невозможным печатать.tty
будет что-то вроде/dev/pts/0
exec &> >(tee >(cat >&/dev/pts/1))
. Не работает комбинация клавиш управления (ctrl + c). Я должен убить терминал, чтобы выйтиВы также можете использовать
wall
:источник
wall
(сокращение от «write all»), так как он записывает в каждый сеанс tty, вошедший в систему, включая тот, с которого вы отправляете. Вместо этого использованиеwrite
позволяет объявить определенный tty.