Имитация нажатия клавиш в Mac-терминале - PullRequest
2 голосов
/ 23 февраля 2012

Я запускаю некоторые симуляции, которые требуют ручного ввода с клавиатуры для изменения параметров (досадно).

Есть ли способ имитировать нажатия клавиш, чтобы я мог запускать симуляции с помощью bash-скрипта?

Ответы [ 3 ]

6 голосов
/ 23 февраля 2012

Хотя я не буду рекомендовать это, вы можете сделать что-то вроде этого (он просто перечисляет содержимое вашего домашнего каталога)

tell application "Terminal"
    activate
    do script "cd ~" -- the command to run
    delay 5 -- maybe throw in a delay to let the process start up
    tell application "System Events" to keystroke "ls -la" & return -- the keystrokes to simulate
end tell

Однако это цифровой эквивалент обучениякот гулять на клавиатуре.Код не имеет понятия, что происходит в терминале.Он просто «печатает» что-то и нажимает return, совершенно не замечая.

Так что, если у вас есть какой-либо другой способ передачи ввода в процесс, используйте его вместо этого.Я только что опубликовал это, так как вы попросили решение AppleScript.Я просто сомневаюсь, что AppleScript является правильным решением.

1 голос
/ 10 марта 2012

Оказывается, я все время мог делать из bash:

./program << ENDINPUT
$input1
$input2
$input3
ENDINPUT
1 голос
/ 23 февраля 2012

Может быть, вы могли бы использовать expect?

Также echo | <cmd>.

...