Sie suchen nach xdotool.
Das Äquivalent von xdotool zu Ihren Beispielbefehlen ist:
xdotool key 1 Return
xdotool keydown Alt key a keyup Alt
Um Text in die stdin eines Programms einzuspeisen, verwenden Sie Pipes und/oder Redirection:
echo 1 | myprogram
(echo "First line"
echo "Second line") | myprogram
myprogram <<EOF
First line
Second line
EOF
Bei interaktiven CLI-Programmen (nicht vollterminale), ist es möglich, Named Pipes oder Coprozesse als eine Art Armenmann-expect
zu verwenden (was Sie ausgeschlossen haben, weil es Tcl ist):
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]}
(Seien Sie vorsichtig beim Lesen aus der Ausgabepipe; z. B. head -1 <out
liest nicht nur eine Zeile – es puffert einen vollen 4k-Block, druckt eine Zeile und verwirft den Rest.)