Partage
  • Partager sur Facebook
  • Partager sur Twitter

besoin d'ameliorer un script bash, lire un txt

    21 décembre 2018 à 19:12:42

    bonjour:

    j'ai récupéré un script qui inscrit les notifications de gnome dans un fichier txt

    cela marche super bien

    mais

    -j'aimerai qu'il reste juste une ligne car si je reçois 50 notifications le fichier se rempli hyper vite

    -et la seconde chose, j'aimerai utiliser la commande espeak comme ceci 

    espeak -v mb/mb-fr1 -s 160 -f '$file'

    et je voudrais que a chaque fois qu'il y a une nouvelle ligne écrite dans le txt ça lance la commande du dessus

    et voici mon petit script

    #!/bin/bash
    
    file=$1
    
    dbus-monitor "interface='org.freedesktop.Notifications'" |\
     grep --line-buffered "string" |\
     grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
     grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
     grep --line-buffered -v '^\s*$' |\
     xargs -I '{}' echo {} >> $file |\
    espeak -v mb/mb-fr1 -s 170 -f '$file'

    merci de votre aide

    ps: je suis pas un pro du codage

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2018 à 20:17:16

      salut,

      je suis pas un pro du codage

      je ne vais pas te demander pourquoi utiliser un fichier temporaire, alors.
      surtout si tu veux n'y "conserver" que le dernier message.

      dbus... | grep .... | xargs espeak -v mb/mb-fr1 -s 170 -f -


      je ne peux pas tester...

      -
      Edité par dantonq 21 décembre 2018 à 20:18:36

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        22 décembre 2018 à 8:10:46

        hé merci effectivement cela marche mais 1fois seulement car quand je modifie le fichier txt, espeak ne lis rien....

        dbus ... | grep .... | xargs espeak -v mb/mb-fr1 -s 170 -f $file 
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2018 à 15:51:06

          tu n'as pas bien lu la commande espeak : elle n'utilise plus de fichier, mais son entrée standard, indiquée par un tiret.
          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            22 décembre 2018 à 17:05:22

            je comprends, et donc je dois mettre ta commande dans un unique fichier bahs que j'execute au startup??

            car là, je l'ai mis à la suite de mon script

            #!/bin/bash
             
            file=$1
             
            dbus-monitor "interface='org.freedesktop.Notifications'" |\
             grep --line-buffered "string" |\
             grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v |\
             grep --line-buffered '.*(?=string)|(?<=string).*' -oPi |\
             grep --line-buffered -v '^\s*$' |\
             xargs -I '{}' echo {} >> $file |\
            dbus ... | grep .... | xargs espeak -v mb/mb-fr1 -s 170 -f -

            sans succès

            • Partager sur Facebook
            • Partager sur Twitter
              22 décembre 2018 à 18:25:12

              c'est cela, la commande donnée n'est pas la suite de la tienne.

              les points de suspension sont à remplacer par les arguments que tu as donnés.
              je n'avais simplement pas retapé toute la ligne.

              voici le script tel que j'imagine qu'il peut fonctionner sans fichier intermédiaire

              #!/bin/bash
               
              file=$1
               
              dbus-monitor "interface='org.freedesktop.Notifications'" \
               | grep --line-buffered "string" \
               | grep --line-buffered -e method -e ":" -e '""' -e urgency -e notify -v \
               | grep --line-buffered '.*(?=string)|(?<=string).*' -oPi \
               | grep --line-buffered -v '^\s*$' \
               | xargs espeak -v mb/mb-fr1 -s 170 -f -



              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                22 décembre 2018 à 19:09:38

                mlaheureusement cela ne marche pas, rien ne ce passe quand j'envoi une notification
                • Partager sur Facebook
                • Partager sur Twitter
                  22 décembre 2018 à 19:53:44

                  comment envoies-tu une notification ? je vais faire de essais de mon côté.

                  mais je n'utilise pas Gnome.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    22 décembre 2018 à 23:44:48

                    j'utilise notify-send "mon message"

                    il m'affiche bien mon message dans le fichier txt mais il ne le lis pas

                    espeak a l'air de lire uniquement les fichiers txt et non les sorties...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 décembre 2018 à 2:46:55

                      donnez les messages d'erreurs, s'il vous plaît

                      echo "mon message" | espeak -v fr -s 110

                      comme ça, ça fonctionne.
                      il faut donc ne pas indiquer de fichier à lire.

                      par contre, si j'intercale xargs, alors espeak ne lit que "mon", essaye sans indiquer de fichier (-f -), et sans xargs...

                      ou alors, il faut que le dernier grep utilise -Z, et xargs l'option -0...

                      comme je te l'ai dit je n'utilise pas Gnome, notify-send n'affiche rien, même via dbus-monitor :(

                      -
                      Edité par dantonq 27 décembre 2018 à 13:24:21

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                        27 décembre 2018 à 13:20:24

                        bon je reviens vers toi car j'ai presque trouvé la solution, enfin il me répéte plusieurs fois le fichier LOL

                        je récapitule ce que je faits pour que tu/vous compreniez.

                        en gros, je récupére ceux qui est envoyé dans le dbus: notification et je l'écrit dans un fichier txt

                        avec la fonction tail n1, je l'affiche sur mon bureau dans conky par exemple

                        ;t

                        ${execi 2 tail -n1 $HOME/show.txt | fold -w10}
                        donc je voudrais placer un if à la suite pour dire si la taille du fichier, il faut lire le fichier avec espeak)
                        car là j'ai juste fait un execi 34 espeak $HOME/show.txt, il me lit juste en boucle show.Txt
                        merci
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 décembre 2018 à 13:35:48

                          normal, conky met à jour les données qu'il affiche en répétant les commandes qui lui sont indiquées.

                          if test -s "$HOME/show.txt"; then espeak -f "$HOME/show.txt"; rm "$HOME/show.txt";fi



                          • Partager sur Facebook
                          • Partager sur Twitter

                          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                            27 décembre 2018 à 13:50:49

                            donc je ne sais pas bien comment faire alors...

                            par exemple show.txt fait 10ko si il change 5ko ou 14ko alors lancer espeak puis effacer les lignes dans show.txt...

                            je pense que c'est comme ça qu'il faut que je fasse non??

                            ou alors le fichiers showtxt fait 0octet et dès qu'il augmente, lancer espeak et après effacer les lignes dans shows.txt

                            -
                            Edité par momororo 27 décembre 2018 à 15:20:35

                            • Partager sur Facebook
                            • Partager sur Twitter

                            besoin d'ameliorer un script bash, lire un txt

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown