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

Настройка сети таким образом, чтобы включить/выключить Wi-Fi при запуске/прерывании процесса X (Linux)
Не удается отправить входные данные правильно В AHK
Сделайте что-нибудь при изменении файла
Winamp и субтитры (автоматическая загрузка)
Можно ли открыть несколько веб-страниц при запуске браузера?
Как получить текущую метку времени в VLC player без использования gui?
Автоматизация последовательности нажатий клавиш в Mac
Как автоматизировать резервное копирование сервера в Windows Home Server?
Как использовать кнопку отключения звука на клавиатуре, чтобы отключить только динамики, а не наушники?
Запись макроса команд windows
Можно ли автообрезка черных полос по краям видео через FFmpeg?
Автоматическая установка программного обеспечения в Windows
Есть ли простой, автоматизированный способ конвертировать большое количество файлов между форматами ZIP и RAR?
Автоматическое резервное копирование открытых вкладок Google Chrome при сбое
Как заставить Windows 8 автоматически отключать сенсорный ввод при использовании пера Wacom и снова включать его, когда его нет

Отправка имитированных нажатий клавиш в Bash

Я недавно пытался написать скрипт, который можно использовать для автоматизировать мою программу на c++ в bash. Если вы знаете, может, я могу просто показать вам пример того, что я пытаюсь сделать:

send("1{enter}")

или

send("!a")

OK для тех, кто не говорит AutoIt:

первый пример отправляет имитацию нажатия клавиши "1", а затем enter(CR)

второй пример отправляет alt-a

Я специально пытаюсь сделать это в bash. никакой другой язык сценариев не будет делать

кроме того, я бы не предпочитаете spoonfeed. Пожалуйста укажите, как писать. Писать сценарий для меня запрещено.

5
задан jww
источник

2 ответов

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

echo 1 | myprogram

(echo "First line"
 echo "Second line") | myprogram

myprogram <<EOF
First line
Second line
EOF

в случае интерактивных программ CLI (не Full-terminal одни), возможно использовать названные трубы или coprocesses как своего рода бедняк expect (который вы исключили из-за Tcl):

mkfifo in out
myprogram <in >out &
echo "First line" >in
read -r reply <out

mkfifo in out
myprogram <in >out &
exec {infd}>in {outfd}<out
echo "First line" >&$infd
read -r reply <&$outfd

coproc foo { myprogram; }
echo "First line" >&${foo[1]}
read -r reply <&${foo[0]}

(будьте осторожны при чтении из выходного канала; например head -1 <out не просто прочитать одну строку-он будет буфер один полный блок 4k, распечатать один очередь, остальное выбросьте.)

11
отвечен grawity 2017-05-18 08:40:40
источник

вы ищете xdotool.

эквивалент xdotool ваших примеров команд:

xdotool key 1 Return
xdotool keydown Alt key a keyup Alt
14
отвечен Dennis 2016-12-13 21:58:25
источник

Другие вопросы automation bash linux