Недавно я пытался написать скрипт, который можно использовать для автоматизации моей программы на c ++ в bash. Если вы знаете AutoIt, я могу просто показать вам пример того, что я пытаюсь сделать:
send("1{enter}")
или
send("!a")
ОК Для тех, кто не говорит AutoIt:
В первом примере отправляется смоделированное нажатие клавиши «1», за которым следует ввод (CR)
Второй пример отправляет alt-a
Я специально пытаюсь сделать это в Bash . Никакой другой язык сценариев не подойдет
Кроме того, я не предпочел бы кормить с ложечки. Пожалуйста, укажите, как написать это . Написание сценария для меня запрещено.
linux
bash
automation
Ishan
источник
источник
Ответы:
Чтобы передать текст в стандартный поток программы, используйте каналы и / или перенаправление :
В случае интерактивных программ CLI ( не полностью терминальных), можно использовать именованные каналы или сопроцессы как своего рода бедняков
expect
(которые вы исключили из-за того, что были Tcl):(Будьте осторожны при чтении из выходного канала; например
head -1 <out
, не будете просто читать одну строку - он будет буферизовать один полный блок 4k, напечатать одну строку, отбросить остальные.)источник
grep
иcurl
являются хорошими примерами этого. Полная терминальная программа - это то, что берет на себя управление всем окном, какvim
иscreen
.Вы ищете xdotool .
xdotool эквивалент ваших примеров команд:
источник