GNU/Linux >> Linux Esercitazione >  >> Linux

Invio di sequenze di tasti simulate in Bash

Stai cercando xdotool.

L'equivalente di xdotool dei tuoi comandi di esempio è:

xdotool key 1 Return
xdotool keydown Alt key a keyup Alt

Per inserire del testo nello stdin di un programma, usa le pipe e/o il reindirizzamento:

echo 1 | myprogram

(echo "First line"
 echo "Second line") | myprogram

myprogram <<EOF
First line
Second line
EOF

In caso di programmi CLI interattivi (non quelli full-terminal), è possibile usare named pipe o coprocessi come una sorta di expect dei poveri (che hai escluso perché è Tcl):

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]}

(Fai attenzione quando leggi dalla pipe di output; ad esempio head -1 <out non leggerà solo una riga, ma memorizzerà nel buffer un intero blocco da 4k, stamperà una riga e scarterà il resto.)


Linux
  1. Come fare eco a un botto!?

  2. Continuazioni della linea Bash dopo &&e || Documentato?

  3. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  4. Come fare eco a una nuova riga negli script di Bash Shell

  5. Bash/sh istruzione 'if else'

Come commentare in Bash

Come leggere i file riga per riga in Bash

Come leggere un file riga per riga in Bash

Qual è l'uso di $# in Bash

echo testo con nuova riga in bash

Aggiungi un'interruzione di riga all'output del comando