Это будет отображаться на другом терминале, но байты в конце не запускают команду, которая будет принята.
Каждое устройство tty имеет два конца, как труба. То, что вы пишете в один конец , не возвращается назад, а выходит через другой конец. Например, с последовательными портами у вас есть /dev/ttyS*
на одном конце, а физический последовательный порт на другом конце. То, что вы пишете в /dev/ttyS0
, отправляется по проводам.
Аналогично, для псевдотерминалов (ptys) у вас /dev/ttys*
происходит переход к безымянному устройству "pty master", которым управляет приложение терминала. Когда вы записываете что-то в /dev/ttys000
, оно вообще не принимается оболочкой как входные данные, потому что оболочка прикреплена к той же "ведомой" стороне pty. Вместо этого запись принимается терминальным приложением, которое содержит соответствующий pty master 'fd, и отображается так, как если бы это был программный вывод.
(Некоторые старые BSD, где ptys называются /dev/ttyP*
, имеют соответствующее устройство /dev/ptyP*
для мастер-конца, но я не думаю, что у macOS есть аналог. Linux, конечно, нет - каждый раз, когда вы открываете /dev/ptmx
там, вы получаете новую выделенную пару pty.)
Так как добиться того, что вы хотите?
Вы можете попытаться найти escape-последовательность, которая просит терминал вернуть что-то обратно в качестве ввода. Раньше это существовало (например, существовала последовательность "скажи мне текущее название окна"), но почти все терминалы отключают ее по соображениям безопасности: например, если вы cat
вредоносный файл, он может установить заголовок терминала и немедленно запросить это обратно, таким образом, запустив команду.
Вы можете попросить ядро подделать ввод. В Linux есть ioctl(TIOCSTI)
который может использоваться такими инструментами, как writevt ; это петля обратно на вход для всех других программ , подключенных к одному концу терминала. Я не уверен, работает ли это на macOS.
Вы можете посмотреть на другие методы автоматизации. Если я правильно помню, у macOS есть приложение "Automator" и AppleScript. Другие системы могут иметь инструменты, которые подключаются к функциям специальных возможностей (как виртуальная клавиатура).