fin ou interruption d'une commande dans un terminal Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
tony
Membre
Membre
Messages : 402
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

hello world !

de temps en temps je me documente sur une commande que je ne connais pas ou mal : ici il s'agit de xdotool . Laissons de côté la bizarrerie du W qui devient Z ( passage momentané en qwerty ?) , c'est le comportement de xdotool lorsque la commande est ou devrait être finie que je ne pige pas .J'ai déjà , rarement certes , rencontré d'autres cas présentant le même comportement , alors je vais essayer de le comprendre . J'utilise un exemple donné par le manuel et je compare avec la commande echo:

Code : Tout sélectionner

 mm2@as17:~$ man xdotool | grep type
           .......
       type [options] something to type
               ......
           Example: to type 'Hello world!' you would do:
            xdotool type 'Hello world!'

 
 mm2@as17:~$ echo 'hello world'
hello world
mm2@as17:~$ 

mm2@as17:~$ xdotool type 'hello world'
hello zorldmm2@as17:~$ hello zorld 
  • fin de la commande echo = le processus se termine par l'envoi de SIGINT qui l'arrête et renvoie le curseur au début d'une nouvelle invite de commande
  • fin de la commande xdotool = soit il n'y a pas de SIGINT ou bien le processus initié par xdotool ne le prend pas en compte et il continue . La nouvelle invite de commande semble exécuter une seconde fois la commande xdotool type
ps : à ne pas prendre en compte pour le sujet principal , juste pour l'hypothèse "qwerty" associé à la commande "xdotool"

Code : Tout sélectionner

 mm2@as17:~$ xdotool type wza
zwqmm2@as17:~$ zwq 
Debian 12/ Xfce
tony
Membre
Membre
Messages : 402
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

j'ai trouvé l'explication , enfin je pense , mais je ne suis pas du tout outillé pour la comprendre https://stackoverflow.com/questions/318 ... i-avoid-it . Par contre j'ai pu facilement reproduire ce comportement avec la commande sleep xxxx + taper du texte tel qu'indiqué dans la réponse .

Je passe à résolu même si je ne comprends pas le pourquoi . Après tout ça n'est qu'accessoire .

ps1 : j'en comprends quand même la 1ère partie mais je ne vois pas pourquoi l'invite de commande se répète sur la même ligne et en affichant stdout de la commande "xdotool type" .
Debian 12/ Xfce
tony
Membre
Membre
Messages : 402
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

J'ai peut-être le fin mot de l'histoire : trouvé à https://superuser.com/questions/1663129 ... lection-of
Whenever anything is typed in to the terminal it is echoed. This is what are seeing. When bash restarts it sets the terminal to raw in order to handle all the special characters and editing etc, and so also turns off echo. It then reads what xdotool has typed, and dutifully echoes it.
et donc un moyen de se débarrasser de la ligne inutile

Code : Tout sélectionner

 mm2@as17:~$ stty -echo && xdotool type "hello world" && stty echo
mm2@as17:~$ hello zorld
et ça me permet de constater que la 1ère ligne "hello world" que je pensais être l'affichage stdout de la commande n'est en fait qu'un artefact dû au comportement interne du terminal ou de ... ? . Donc c'est dans l'ADN de xdotool type de restituer le texte à taper après une nouvelle invite de commande . De plus je me suis aperçu que si je ne restitue pas la propriété echo au terminal il n'affiche rien derrière la nouvelle invite de commande , se fige et ne fonctionne plus . Il n'y a plus qu'à changer de terminal
Debian 12/ Xfce
Avatar de l’utilisateur
piratebab
Site Admin
Site Admin
Messages : 5854
Inscription : 24 avr. 2016, 18:41
Localisation : sud ouest
Status : En ligne

c'est effectivement quelque chose qui n'est pas intuitif. il nous semble normal qu'un terminal affiche la lettre qu'on vient de taper sur le clavier. Alors qu'en fait ça n'a rien d'automatique et d'obligatoire. C'est juste plus ergonomique pour l'humain, le terminal n'en a pas besoin pour fonctionner.
tony
Membre
Membre
Messages : 402
Inscription : 10 juil. 2023, 00:54
Status : Hors-ligne

piratebab a écrit : 18 sept. 2023, 15:14 c'est effectivement quelque chose qui n'est pas intuitif. il nous semble normal qu'un terminal affiche la lettre qu'on vient de taper sur le clavier. Alors qu'en fait ça n'a rien d'automatique et d'obligatoire. C'est juste plus ergonomique pour l'humain, le terminal n'en a pas besoin pour fonctionner.
je viens de comprendre toute la portée de ta remarque et ça m'a permis de me rendre compte que si j'omets la dernière partie de la commande , soit && stty echo , le terminal n'est pas bloqué comme je le pensais : il est toujours opérationnel mais on ne voit pas ce qu'on entre , par contre il affiche bien le résultat d'une commande entrée en aveugle . En fait il est devenu inutilisable pour un utilisateur normal . Je viens donc de corriger mon message .
Debian 12/ Xfce
Répondre