Posté par Khâpin .
En réponse au message Salut.
Évalué à 2.
Bon, je te préviens tout de suite, je suis loin d'être un gourou (jamais eu de cours d'info, je suis sous GNU/Linux depuis à peine 1 an).
Je suis plutôt d'accord avec les réflexions de Calim' Héros (du genre "donne un poisson à un homme, tu le nourris un jour, apprends-lui à pêcher, tu le nourris toute sa vie), mais, sans vouloir te vexer, tu n'as pas l'air de vouloir apprendre à pêcher, et je n'aime pas voir quelqu'un qui a faim, et je n'ai pas envie que ce fil s'éternise.
Résumons ce que j'ai compris de ton problème: on donne en argument le nom d'un groupe (audio par exemple), et tu veux que ton script sorte la liste des fichiers appartenant à chacun des utilisateurs de ce groupe.
Je suppose que ce script est utilisé en root (sinon, je ne vois vraiment pas quoi faire).
Premièrement, comment connaître les utilisateurs de audio? Le plus simple est d'aller directement voir dans /etc/group par #grep audio /etc/group
audio:x:100:user1,user2,user3
Ensuite, on ne veut conserver que les users, avec si possible des retours à la ligne à la place des virgules.
J'avais commencé par le faire avec grep puis cut puis sed #grep audio /etc/group | cut -d : -f 4 | sed 's/,/\n/g'
Puis en lisant l'aide de sed (et surtout http://sed.sourceforge.net/grabbag/tutorials/oneliners.txt(...) , référencé dans la page de manuel de sed), j'ai vu qu'il y avait plus élégant:
#sed -e '/audio/!d;s///;s/:x:[0-9]*://;s/,/\n/g' /etc/group
Maintenant qu'on a la liste des utilisateurs, on en fait quoi?
Sachant (car tu as lu le man de find, ou simplement le premier post), que `find / -user nomdeluser` te donne la liste des fichiers de nomdeluser, il ne reste plus qu'à faire une boucle for:
#for i in `sed -e '/audio/!d;s///;s/:x:[0-9]*://;s/,/\n/g' /etc/group` ; do find / -user $i > /tmp/fichiers.$i ; done
Et voilà, tu as dans des fichiers séparé (/tmp/fichiers.user1 ...) la liste des fichiers de chaque utilisateur du groupe audio.
Ceci n'est même pas un script, ce n'est qu'une ligne de commande.
Pour ton information (je sais, je me répète), je ne suis pas informaticien de profession ni de formation, et je ne savais pas du tout comment faire cela avant d'avoir lu ton message. D'après les information des posts précédents, tu aurais pu le faire aussi.
Il suffit d'un peut de curiosité (ce que Calim' Héros appelle un cerveau, sans doute), et de lire les pages de manuels de sed et find (si tu es étudiant en info, je présume que tu sais quand même ce qu'est une boucle for).
Si tu n'as pas cette curiosité, je pense que tu ferais mieux de changer d'orientation.
[^] # Re: MAN
Posté par Khâpin . En réponse au message Salut. Évalué à 2.
Je suis plutôt d'accord avec les réflexions de Calim' Héros (du genre "donne un poisson à un homme, tu le nourris un jour, apprends-lui à pêcher, tu le nourris toute sa vie), mais, sans vouloir te vexer, tu n'as pas l'air de vouloir apprendre à pêcher, et je n'aime pas voir quelqu'un qui a faim, et je n'ai pas envie que ce fil s'éternise.
Résumons ce que j'ai compris de ton problème: on donne en argument le nom d'un groupe (audio par exemple), et tu veux que ton script sorte la liste des fichiers appartenant à chacun des utilisateurs de ce groupe.
Je suppose que ce script est utilisé en root (sinon, je ne vois vraiment pas quoi faire).
Premièrement, comment connaître les utilisateurs de audio? Le plus simple est d'aller directement voir dans /etc/group par
#grep audio /etc/group
audio:x:100:user1,user2,user3
Ensuite, on ne veut conserver que les users, avec si possible des retours à la ligne à la place des virgules.
J'avais commencé par le faire avec grep puis cut puis sed
#grep audio /etc/group | cut -d : -f 4 | sed 's/,/\n/g'
Puis en lisant l'aide de sed (et surtout http://sed.sourceforge.net/grabbag/tutorials/oneliners.txt(...) , référencé dans la page de manuel de sed), j'ai vu qu'il y avait plus élégant:
#sed -e '/audio/!d;s///;s/:x:[0-9]*://;s/,/\n/g' /etc/group
Maintenant qu'on a la liste des utilisateurs, on en fait quoi?
Sachant (car tu as lu le man de find, ou simplement le premier post), que `find / -user nomdeluser` te donne la liste des fichiers de nomdeluser, il ne reste plus qu'à faire une boucle for:
#for i in `sed -e '/audio/!d;s///;s/:x:[0-9]*://;s/,/\n/g' /etc/group` ; do find / -user $i > /tmp/fichiers.$i ; done
Et voilà, tu as dans des fichiers séparé (/tmp/fichiers.user1 ...) la liste des fichiers de chaque utilisateur du groupe audio.
Ceci n'est même pas un script, ce n'est qu'une ligne de commande.
Pour ton information (je sais, je me répète), je ne suis pas informaticien de profession ni de formation, et je ne savais pas du tout comment faire cela avant d'avoir lu ton message. D'après les information des posts précédents, tu aurais pu le faire aussi.
Il suffit d'un peut de curiosité (ce que Calim' Héros appelle un cerveau, sans doute), et de lire les pages de manuels de sed et find (si tu es étudiant en info, je présume que tu sais quand même ce qu'est une boucle for).
Si tu n'as pas cette curiosité, je pense que tu ferais mieux de changer d'orientation.
Cordialement