chmod -r 775 * .cgi code> ne modifie que des autorisations sur les fichiers du répertoire actuel, les fichiers du sous-répertoire ne sont pas modifiés du tout. Ceci est la même fonctionnalité exacte que simplement faire
chmod 775 * .cgi code>. J'ai vu des personnes utilisent des solutions telles que
trouver code> et ce que rien. Ok excellent, mais pourquoi -r -r est-il même s'il n'existe même rien? P>
5 Réponses :
Probablement parce que vous n'avez aucun répertoire nommé Par exemple: P> *. CGI code>. Quotez le manuel :
$ ls -R
.:
a a.c b.c c.c
./a:
a.c b.c sub
./a/sub:
a.c b.c
$ chmod -R 444 *.c
$ ls -l
drwxr-xr-x 3 msw msw 4096 2010-08-12 18:07 a
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 a.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 b.c
-r--r--r-- 1 msw msw 0 2010-08-12 18:07 c.c
$ : directory a not affected
$ chmod -R u-w a
$ ls -l a
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
dr-xr-xr-x 3 msw msw 4096 2010-08-12 18:07 sub
$ ls -l a/sub
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 a.c
-r-xr-xr-x 1 msw msw 0 2010-08-12 18:07 b.c
$ : got em
Si vous dites (it va em> recueille dans n'importe quel em> em> qui correspond -r code> indique
chmod code> pour recueillir dans n'importe quel répertoires qui sont donnés en tant qu'arguments. P>
chmod -r 775 * .cgi code>, la coque va développer
*. CGI code> dans une liste de fichiers correspondant à ce motif et transmet que comme le Liste des arguments - donc
chmod code> n'est pas invité à regarder dans d'autres répertoires. P>
*. CGI code> ...) p>
Oh Gotcha. Il est donc utile de changer de manière récursive tous les fichiers sous un certain répertoire.
Pour accomplir ce que vous voulez essayer ici Rechercher code> génère une liste de tous les fichiers avec un
.cgi code> finissant de la Annuaire actuel vers le bas et passe cette liste à
Xargs code> qui applique
chmod code> à chacun. p> p>
Pour trouver tous les fichiers CGI dans le répertoire actuel et ses sous-répertoires et exécuter *. CGI code> est développé par votre shell dans une liste de tous les noms de fichiers de l'annuaire actuel terminant dans
.cgi code>. Alors l'enveloppe appelle
chmod code> avec cette liste des noms de fichiers.
chmod code> regarde tous les noms de fichiers que cela a eu du shell, change de modes et recueille si une partie de eux étaient des répertoires. Mais probablement aucun d'entre eux n'est, alors il n'y a rien à recueil. P>
chmod code> sur eux, vous pourriez faire : p>
Cette réponse est la même DMCkee
Mettez le cas que FOO0.CGI et FOO1.CGI sont le contenu du répertoire. Si vous tapez Ce que vous voulez faire peut être accompli facilement: p> * code> est une coque intégrée, tandis -r est une option de ligne de commande. Donc,
chmod code> n'obtiendra jamais
* code> comme un argument.
chmod -r o + r * .cgi code> alors
chmod code> obtiendra le "-r", "O + R '," FOO0.CGI "et" FOO1 .cgi 'comme arguments. P>
Cette réponse est la même DMCkee
Cool merci pour toutes les réponses. Les réponses expliquant à l'aide de la recherche étaient utiles, mais j'ai sélectionné la réponse de MSW parce que j'étais plus curieux de ce que le -r fait. Je n'ai choisi que les MSW au lieu de Matthew's depuis que MSW était légèrement légèrement légèrement.