Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/08/2014, à 22:22

DébuNux

lire le terminal en continue j'usquà l'apparition d'un caractère.

Bonjour,

Je cherche à lire en continue le flux de sortie d'une commande pour capturer un caractère qui apparait au bout
d'un certain temps par la commande pour ensuite faire une action.
En faite je lance une commande qui me renvoie au bout de quelque minutes des étoiles sur le terminal et
à ce moment là je voudrais que mon script détecte ses étoiles et éffectue une action. comment faire

ps: je suis débutant merci.

Hors ligne

#2 Le 13/08/2014, à 22:43

Kooothor

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

Salut,

Alors lire un flux, ça c'est facile :

tail -f

Sinon sans code example, c'est pas facile de t'aider.
Et sois sûr de savoir ce que c'est qu'un pipe, parce que c'est très utile !

@+
~ktr

Hors ligne

#3 Le 13/08/2014, à 22:52

Watael

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

salut,

la boucle simule le programme d'affichage

$ n=0
$ a=(a b c d e f g h i \* j k l m )
$ while sleep 1; do test "$n" -lt ${#a[@]} && echo "${a[@]:n++:1}" || break; done | { read -d '*' bla; echo "$bla - fini! ";}

quelque temps plus tard, cela affiche ceci:

a
b
c
d
e
f
g
h
i - fini! 

Dernière modification par Watael (Le 13/08/2014, à 22:52)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 13/08/2014, à 23:07

pingouinux

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

Bonsoir,
Autre façon de faire

for i in  1 2 3 4 '*' 5 6 7;do echo "$i";sleep 1;done|sed '/\*/q'; echo "J'ai vu l'étoile"

Hors ligne

#5 Le 15/08/2014, à 03:55

DébuNux

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

Ok ça marche Merci.
mais maintenant j'essaie de terminer la commande avec kill ou killall mais ça ne marche pas...
Je voudrais arrêter le processus en utilisant son nom mais je n'y arrive pas...
je vous montre un exemple de la façon dont je procède, dans cette exemple j'essaie de terminer find.

find abc /
killall find

j'ai éssayé aussi kill find ou kill -TERM find etc... sans succés...

Hors ligne

#6 Le 15/08/2014, à 06:37

nesthib

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

@DébuNux : si tu expliquais en détail ce que tu cherches à faire, en commençant par détailler ce qu'est ce script/programme qui affiche des étoiles ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 15/08/2014, à 08:00

tiramiseb

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

find abc /
killall find

En dehors du fait que la commande "find abc /" est mal formée, là tu attends la fin de ce "find" pour exécuter ton "killall".

Comme nesthib, j'aimerais bien en savoir plus sur ce que tu essaies de faire pour pouvoir t'aider : car là avec tes explications vagues, on ne comprend pas bien ce que tu veux faire.

Hors ligne

#8 Le 15/08/2014, à 22:16

DébuNux

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

Merci à tous ça fonctionne.
En effet comme disait tiramiseb le script attendez la fin du find pour éffectuer un killall.

Hors ligne

#9 Le 16/08/2014, à 05:00

nesthib

Re : lire le terminal en continue j'usquà l'apparition d'un caractère.

Et par curiosité, tu ne voudrais pas expliquer à quoi sert ce script ?
J'ai comme l'impression qu'il devrait y avoir un moyen plus simple de réaliser ce que cherches à faire.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne