GNU/Linux >> Tutoriels Linux >  >> Linux

Envoi de frappes simulées dans Bash

Vous recherchez xdotool.

L'équivalent xdotool de vos exemples de commandes est :

xdotool key 1 Return
xdotool keydown Alt key a keyup Alt

Pour insérer du texte dans le stdin d'un programme, utilisez des tubes et/ou une redirection :

echo 1 | myprogram

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

myprogram <<EOF
First line
Second line
EOF

Dans le cas de programmes CLI interactifs (pas terminaux complets), il est possible d'utiliser des tubes nommés ou des coprocessus comme une sorte de expect du pauvre (que vous avez exclu parce que vous êtes 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]}

(Soyez prudent lors de la lecture à partir du tube de sortie ; par exemple head -1 <out ne se contentera pas de lire une ligne - il mettra en mémoire tampon un bloc complet de 4k, imprimera une ligne, supprimera le reste.)


Linux
  1. Comment faire écho à un coup ! ?

  2. Continuation de la ligne bash après &&et || Documenté?

  3. Comment faire écho à une nouvelle ligne dans les scripts shell bash

  4. Est-il possible de faire interagir un script shell bash avec un autre programme en ligne de commande ?

  5. Lire ligne par ligne dans le script bash

Comment commenter dans Bash

Comment lire des fichiers ligne par ligne dans Bash

Comment lire un fichier ligne par ligne dans Bash

À quoi sert $# dans Bash

texte d'écho avec une nouvelle ligne dans bash

Ajouter un saut de ligne à la sortie de la commande