GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Senden simulierter Tastenanschläge in Bash

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.)


Linux
  1. Wie man einen Knall wiederholt!?

  2. Bash-Zeilenfortsetzungen nach &&und || Dokumentiert?

  3. Bash Echo Die Befehlszeile wird in der Befehlszeile selbst ausgeführt (nicht in einem Skript)?

  4. Verwenden von Case-Anweisungen in Bash

  5. Zeile für Zeile im Bash-Skript lesen

So kommentieren Sie in Bash

So lesen Sie Dateien Zeile für Zeile in Bash

So lesen Sie eine Datei Zeile für Zeile in Bash

Bash-Verlauf ohne Zeilennummern

Überprüfen Sie, ob eine Variable in einer Liste in Bash vorhanden ist

Zeilenumbruch an die Befehlsausgabe anhängen