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 24/04/2013, à 16:26

sacha971

[Résolu] Indication sur une commande

Bonjour,

En fait j'aimerais que vous m’éclaireriez sur cette commande :

find  /etc -type f | xargs grep floppy 2>  /dev/null

Dans un premier temps j'aimerais savoir ce que fait cette commande, puis dans un second temps que vous me précisiez le rôle de chaque terme de la commande.

Merci wink

Dernière modification par sacha971 (Le 24/04/2013, à 17:30)

Hors ligne

#2 Le 24/04/2013, à 16:32

nesthib

Re : [Résolu] Indication sur une commande

La commande cherche (find) dans /etc tous les fichiers (type -f) et passe le retour via un pipe (|) à une seconde commande (xargs) qui va exécuter pour chaque terme (ou groupe de terme) retourné par la commande 1, la commande grep avec l'argument floppy, tout en redirigeant (>) la sortie d'erreur (2>) vers /dev/null.

En résumé, la commande cherche tous les fichiers dans /etc et pour chaque fichier cherche s'il contient un motif floppy. Le tout en masquant les erreurs.

Comme ça n'est pas la première fois que tu poses ce genre de questions pour ton BTS, je tiens à te rappeler que le but d'un exercice c'est de chercher par toi même. Si tu demandes une réponses toute faite à chaque fois tu ne progresseras pas et ça sera difficile le jour de l'examen wink
La prochaine fois, essaie d'y mettre un peu du tien et de montrer que tu cherches et que tu ne demandes pas seulement une réponse.


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

#3 Le 24/04/2013, à 16:42

sacha971

Re : [Résolu] Indication sur une commande

Merci de ta réponse nesthib, oui tu as raison, mais j'avoue que pour le coup, j'ai eu la fleme de chercher dans mon cours..... et puis c'est pas ma tasse de thé les commandes linux...

Hors ligne

#4 Le 24/04/2013, à 17:24

Hizoka

Re : [Résolu] Indication sur une commande

find  /etc -type f | xargs grep floppy 2>  /dev/null

peut etre simplifié par :

grep "floppy" /etc/* 2>/dev/null

non ?

nesthib => je ne pige pas trop comment marche xargs, et quel est son interet dans ce genre de commande ?
merci

Dernière modification par Hizoka (Le 24/04/2013, à 17:25)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 24/04/2013, à 17:36

pingouinux

Re : [Résolu] Indication sur une commande

@Hizoka #4 :
Il faudrait faire :

shopt -s globstar
grep floppy /etc/**/* 2>/dev/null

Hors ligne

#6 Le 24/04/2013, à 17:52

Hizoka

Re : [Résolu] Indication sur une commande

ou

grep -R "floppy" /etc/* 2>/dev/null

non ?

et pour ma question sur xargs ?
si je pige bien dans l'ex ci-dessus :
si find renvoie

/etc/fichier_bidon

xargs va permettre d'executer la commande :

grep floppy 2>/dev/null /etc/fichier_bidon

c'est ça ?
ca fait :
commande post xargs infos provenant du pipe


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 24/04/2013, à 18:03

pingouinux

Re : [Résolu] Indication sur une commande

Tu as raison sur les deux points.

Hors ligne

#8 Le 24/04/2013, à 18:10

Hizoka

Re : [Résolu] Indication sur une commande

oki merci.

Ca vaut vraiment le coup de suivre les différents topics !


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 24/04/2013, à 18:35

tiramiseb

Re : [Résolu] Indication sur une commande

Hizoka a écrit :

ou

grep -R "floppy" /etc/* 2>/dev/null

non ?


Là le grep va chercher dans tous les fichiers. Dans la commande d'origine, il ne cherche que dans les "regular files" : pas dans les "character devices", pas dans les "block devices", pas dans les liens symboliques...

Hors ligne

#10 Le 24/04/2013, à 19:45

Hizoka

Re : [Résolu] Indication sur une commande

bien vu.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#11 Le 24/04/2013, à 20:43

nesthib

Re : [Résolu] Indication sur une commande

@Hizoka (encore un nouvel avatar ? tongue) :
En fait xargs est surtout utilisé pour décomposer des grosses tâches en sous-tâches. Quand tu écris :

commande … *

ton shell remplace « * » par la liste des fichiers correspondant à ton motif et appelle la commande.
S'il y a 10000 fichiers cela peut vite poser problème car il y a une limite à la taille de la chaîne d'arguments (en gros de l'ordre de « getconf ARG_MAX »). De plus certaines commandes fonctionnent bien avec un nombre raisonnable de fichiers en arguments mais vont planter s'il y en a de trop. Enfin tu peux vouloir décomposer une commande en groupes de commandes pour bénéficier de plusieurs cœurs/processeurs.

xargs permet de faire tout cela, mais est souvent réduit à des exemples tels que celui du message #1.

Essaie par exemple :

mkdir /tmp/test
cd /tmp/test
touch fichier{1..100}
find . | xargs echo ">>>"
find . | xargs -n 3 echo ">>>"

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

#12 Le 24/04/2013, à 20:51

Hizoka

Re : [Résolu] Indication sur une commande

1ere fois que je change d'avatar en 5ans tongue (c'est l'icone de mon logiciel zenitor)

en effet pas mal le coup du -n 3

tu fais comment pour travailler sur plusieurs coeurs par exemple ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#13 Le 24/04/2013, à 21:08

nesthib

Re : [Résolu] Indication sur une commande

man xargs a écrit :

-P max-procs
              Run up to max-procs processes at a time; the default is 1.  If max-procs is 0, xargs will run as many processes as possible at a time.  Use the -n option with  -P;  otherwise  chances are that only one exec will be done


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