Forum Linux.debian/ubuntu Besoins d'aide sur deux commandes

Posté par . Licence CC by-sa.
Tags :
-1
22
nov.
2018

Bonjour, je suis étudiant à l'université et on nous a demandé d'analyser deux commande mais même avec le cour à côté je ne comprend pas ce que ça éxécute dans notre programme shell voilà les deux commandes proprement dites:

for i in 'ls..lesDonnees/*.val'; do echo $i | tail -1;done

et

for i in '../lesDonnees/*.val';do cat $i | tail -1;done

Question supplémentaire:
A quoi sert le xvzf dans un tar xvzf …

  • # decomposer, comprendre et recomposer

    Posté par . Évalué à 4.

    il faut peut-etre deja bien ecrire le sujet car il manque des espaces je penses.

    ensuite il faut decomposer le code en fonctionnalité de base, et comprendre à partir du cours ce que cela fait

    ici tu as une boucle
    for i in ...;do ....;done

    tu as des commandes plus simples
    ls ../lesDonnees/*.val
    echo $i
    tail -1

    • [^] # Re: decomposer, comprendre et recomposer

      Posté par . Évalué à 1.

      Commande
      Voici éxactement l'énoncé du tp mais si je vous demande de l'aide c'est parceque je comprend vraiment pas les les commandes, la syntaxe quasiment tout en fait

      • [^] # Re: decomposer, comprendre et recomposer

        Posté par . Évalué à 3.

        je comprend vraiment pas les les commandes

        tu es allé en cours ?

        ce sont des commandes linux, tu as essayé ces commandes ?
        (sur les ordinateurs de la fac ou sur le tiens)

        • [^] # Re: decomposer, comprendre et recomposer

          Posté par . Évalué à 1.

          Oui je vais en cour. Ce sont les deux dernières commandes du TP.
          Pour moi la première commande affiche les fichier dons l'extension est .val

          • [^] # Re: decomposer, comprendre et recomposer

            Posté par (page perso) . Évalué à 7.

            En fait ça ne marchera pas pour plusieurs raisons.

            Raison n°1: le mauvais type de guillemet est utilisé

            Il faut différencier (je pars du principe que tu as un clavier azerty):

            • ` (backquote, AltGr+7 sur ton clavier)
            • ' (guillemet simple, sur la touche 4 du clavier)
            • " (guillemet double, sur la touche 3 du clavier)

            Je n'aime pas le backquote (guillemet inversé) parce que quand on débute on ne voit pas la différence avec le guillemet simple. La notation $(commande) est équivalente à `commande` et plus compréhensible à mon sens.

            Pour comprendre un peu mieux, je te conseille donc la lecture du Guide avancé d'écriture des scripts Bash, et notamment la partie sur les guillemets.

            Raison n°2: les espaces servent de séparateur

            Cette commande n'est pas valide:

            ls..

            Celle là oui:

            ls ..

            Raison n°3: man est ton ami (aka RTFM)

            A quoi sert le xvzf dans un tar xvzf …

            La commande man te donne des infos sur une commande. man tar te dira donc à quoi correspondent les lettres qui suivent (pour casses le suspense, ce sont des options, à toi de regarder le manuel pour savoir ce que fait la commande tar et à quoi correspondent ces options)

            Conclusion

            Il y a de fortes chances que tu te sois gourré en tapant ta première commande:

            for i in 'ls..lesDonnees/*.val'

            (au passage il manque aussi un slash).
            Je ne pense pas me tromper en disant qu'il doit être écrit sur ton papier plutôt:

            for i in `ls ../lesDonnees/*.val`

            Tu devrais à présent voir les différences.

  • # Explainshell.com

    Posté par . Évalué à 6.

    Voici un site qui décompose et explique chaque commande. J'y ai mis ta commande :
    Explainshell.com
    et avec tar -xvzf

    • [^] # Re: Explainshell.com

      Posté par . Évalué à 1.

      putain de merde !

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # ls contre blog

    Posté par (page perso) . Évalué à 1.

    bonjour,
    il manque le contexte du cours et la bonne syntaxe de tes 2 lignes :( pour être sur de la question…

    Pour ta première ligne, avec une bonne syntaxe : On n'utilise jamais ls dans un script bash ! c'est une commande externe donc demande plus de resources, de plus le résultat est différent en fonction de ta version bash (fichiers avec espace sont "cotés" depuis peu)
    ps: certains cours utilisent ls mais c'est uniquement à titre d'exemple d'une commande externe

    Ta seconde syntaxe elle utilise une fonction builtin (glob étendu), interne au bash donc demande moins de resources et le retour est standard

Suivre le flux des commentaires

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