Forum Programmation.shell Fichier de trace

Posté par  .
Étiquettes : aucune
0
5
fév.
2009
J'ai un script et j'aimerai pouvoir faire un fichier de trace.

J'avais pensé à cela mais cela ne donne un fichier log mais vide.

#find ~/Bureau/Linux/ -exec sed -i 's/a_intouch/w_intouch/g' {} \; > fichier.log
#find ~/Bureau/Linux/ -exec sed -i 's/b_intouch/x_intouch/g' {} \; > fichier.log

Quequ'un peut me donner son avis.
  • # -e

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    sed -e pas sed -i (man sed)

    La gelée de coings est une chose à ne pas avaler de travers.

    • [^] # Re: -e

      Posté par  . Évalué à 1.

      En fait j'aimerai pouvoir tracer tous les fichiers que je modifie et dans lequel je fais mon changement de chaine de caractères.
    • [^] # Re: -e

      Posté par  . Évalué à 1.

      Le pas correspond à quoi
      • [^] # Re: -e

        Posté par  . Évalué à 5.

        À une négation dans ce cas
        • [^] # Re: -e

          Posté par  . Évalué à 1.

          mais cela ne marche pas chez moi.
          mon fichier ne trace rien.



          find ~/Bureau/Linux/test_en_cours/test/test_intou/ -exec sed -e pas sed -i 's/a_intouch/w_intouch/g' {} \;
          • [^] # Re: -e

            Posté par  (site web personnel, Mastodon) . Évalué à 4.

            Oulala! Oublie tout ce que j'ai dit, je n'ai d'ailleurs jamais lu ton post!

            La gelée de coings est une chose à ne pas avaler de travers.

            • [^] # Re: -e

              Posté par  . Évalué à 1.

              explique
              • [^] # Re: -e

                Posté par  . Évalué à 2.

                Il dit qu'il a pu de genoux.
    • [^] # Re: -e

      Posté par  (site web personnel) . Évalué à 4.

      Heu -i ca veut dire remplacer dans le fichier (du moins dans gnu sed) et -e est facultatif donc sa commande sed est valide :)


      -i[SUFFIX], --in-place[=SUFFIX]
      edit files in place (makes backup if extension supplied)

      [...]

      If no -e, --expression, -f, or --file option is given, then the first non-option argument is taken as the sed script to interpret.
  • # 2 choses

    Posté par  (site web personnel) . Évalué à 4.

    1/ Ajoutes un -print (vu que tu lui dis de faire -exec au lieu d'afficher)
    2/ utilise >> au lieu de > dans la deuxième commande
    • [^] # Re: 2 choses

      Posté par  . Évalué à 1.

      Ok mais le -print dont tu m'as parlé, je dois le placer ou.
    • [^] # Re: 2 choses

      Posté par  (site web personnel) . Évalué à 2.

      On peut regrouper les substitutions dans le même script Sed (GNU Sed) --- ou utiliser plusieurs options -e commande :
      find ... -exec sed -i -e 's/a_intouch/w_intouch/g ; s/b_intouch/x_intouch/g' {} + ...

      Le + au lieu de \; permet de ne pas lancer un sed par fichier.
      • [^] # Re: 2 choses

        Posté par  . Évalué à 2.

        Est ce que le "+" est identique à un pipe "|".

        Mais je ne comprends pas bien un truc.
        On peut lancer plusieur fois des commandes et les cumuler avec le +.

        Mais est ce que je peux ajourter ma sortie de direction après le + du style

        find ... -exec sed -i -e 's/a_intouch/w_intouch/g ; s/b_intouch/x_intouch/g' {} + >> trace.log

        Mais je ne pense pas
        • [^] # Re: 2 ou 3 choses

          Posté par  (site web personnel) . Évalué à 1.

          Le « + » a (à peu près) le même effet qu'un pipe vers xargs ; pour voir la différence avec le «\;», compare
          find ~/ -exec echo Echo {} \; | grep -c ^Echo
          find ~/ -exec echo Echo {} + | grep -c ^Echo
          find ~/ | xargs echo Echo | grep -c ^Echo

          Les deux dernières regrouperont les arguments trouvés par find.

          On peut même mettre plusieurs blocs -exec ... + à la suite, mais si tu veux une séquence logique, il vaut mieux écrire un script capable de traiter plusieurs arguments à la fois :
          ... -exec ton_script.sh {} +

          Sinon, il faut répéter l'argument
          ... -exec sh -c "echo A "{}"; echo B "{} \;

          (le + n'est utilisable qu'avec un seul {} à la fin).

          Si, la redirection peut être écrite n'importe où (en dehors d'une chaîne de caractères). Si tu veux la limiter à la commande en -exec, il faut utiliser le sh -c "sous-script shell avec ses redirections".
          • [^] # Re: 2 ou 3 choses

            Posté par  . Évalué à 1.

            En tout cas je prends note de cela et je teste des demain.
            Et en grand merci pour jouer les prof et prendre le temps d'expliquer.
            C'est super cool...

            Cela donne encore plus envie d'apprendre.
            • [^] # Re: 2 ou 3 choses

              Posté par  . Évalué à 3.

              En tout cas je prends note de cela et je teste des demain.
              Et en grand merci pour jouer les prof et prendre le temps d'expliquer.
              C'est super cool...

              Cela donne encore plus envie d'apprendre.


              pour apprendre il faut lire les manuels ET les comprendre
              (man find, man sed, man xargs dans un terminal ou sur google)

              il faut aussi comprendre ce que tu lis (sur internet et dans les manuels) et ne pas appliquer betement/sauvagement

              exemple avec le
              find ~/Bureau/Linux/test_en_cours/test/test_intou/ -exec sed -e pas sed -i 's/a_intouch/w_intouch/g' {} \;

              ou tu as repris sans comprendre ce que te proposais un autre

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.