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 NeoX . É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 atlas2503 . Évalué à 1.
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 NeoX . Évalué à 3.
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 atlas2503 . É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 liberforce (site web personnel) . É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:
Celle là oui:
Raison n°3: man est ton ami (aka RTFM)
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:
(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:
Tu devrais à présent voir les différences.
# Explainshell.com
Posté par Axone . É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 gUI (Mastodon) . É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 papajoke . É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 externeTa 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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.