Отвечать на вопрос в заголовке.
Способ моделировать нажатие клавиши в терминале через TIOCSTI
Например:
insert() {
perl -le 'require "sys/ioctl.ph";
ioctl(STDIN, &TIOCSTI, $_) or
die "$!\n" for split "", join " ", @ARGV' "$@"
}
Однако в случае tmux
, если Вы делаете:
insert $'\02'
в a tmux
область, которая вставит ^B
символ во входном буфере терминала той области, не любой из терминалов, присоединенных к текущей сессии tmux
читает его вход из.
Решение состояло бы в том, чтобы сделать:
insert $'\02' < "$(tmux lsc -F '#{client_tty}' -t '' | head -n 1)"
Где:
tmux lsc -F '#{client_tty}' -t ''
сообщает терминал (терминалы), присоединенный к рабочей сессии.
Но в современных системах Linux, которые не будут работать (Вы получите Операцию, не разрешенную ошибку), потому что из соображений безопасности TIOCSTI ioctl может только быть выпущен к Вашему терминалу управления (и терминал управления оболочки, интерпретирующей сценарий в a tmux
область была бы терминалом области).
Необходимо было бы спросить tmux
чтобы сделать это, и я не уверен, что это возможно.
Я запустил
$ host
на сервере и проверил имя хоста всех IP-адресов. degas.tmh.tmhs имел другой IP-адрес, чем машина, которую мы пытались починить.
Оказалось, что два разных IP-адреса имеют общее имя хоста degas. Это может быть связано с тем, что недавно ему пришлось переключить подключение к Интернету. Я добавил его реальный IP-адрес в bic:/etc/exports, запустил
$ exportfs -a
и смог смонтировать общее пространство на его машине.