Isso é normalmente o que expect
foi escrito para:
expect -c 'spawn -noecho vi; send "iHello World!\r"; interact'
Embora expect
tenha sido escrito para o TCL nos dias anteriores a perl
ou python
sendo popular, agora módulos semelhantes para perl
ou python
também estão disponíveis.
Outra opção é emitir TIOCSTI
ioctls para seu dispositivo tty para inserir caracteres (um byte de cada vez) em sua fila de entrada:
perl -le 'require "sys/ioctl.ph";
ioctl(STDIN, &TIOCSTI, $_) for split "", join " ", @ARGV
' $'iHello World!\r\e'; vi
Isso tem o benefício de evitar uma camada extra de pseudo-terminal entre o emulador de terminal e o aplicativo (aqui vi
).