définir des permissions de lecture et d'écriture sur le dossier et tous ses directorys parents

J'ai besoin de définir des permissions de lecture et d'écriture pour root user root au directory subfolderNsubfolderN et tous ses dossiers parents jusqu'à la root .

Je peux le faire à la main:

 $ sudo chmod +rx /root/subfolder1/subfolder2/subfolderN $ sudo chmod +rx /root/subfolder1/subfolder2 $ sudo chmod +rx /root/subfolder1 $ sudo chmod +rx /root 

Mais si N est grand, je suis fatigué. Comment faire automatiquement par une command?

Cela peut être fait facilement dans la coquille, en commençant par le subdir et en se déplaçant vers le haut:

 f=/root/subfolder1/subfolder2/subfolderN while [[ $f != "/" ]]; do chmod +rx $f; f=$(dirname $f); done; 

Cela commence par n'importe quel file / directory que vous définissez f aussi, et fonctionne sur chaque directory parent, jusqu'à ce qu'il rencontre "/" (ou ce que vous définissez la string dans la condition de la boucle). Il ne chmod "/".

Avec csh , tcsh , ksh , zsh , bash ou fish :

 sudo chmod +rx /root{,/subfolder1{,/subfolder2{,/subfolderN}}} 

Avec zsh :

 f=/root/subfolder1/subfolder2/subfolderN until [[ $f = / ]] {chmod +rx $f; f=$f:h;} 

Je ne sais pas ce que vous essayez de faire, mais c'est mieux que vous ne prenez pas le récursif à la légère . Cela dit, lisez la réponse réelle:

Euh … pourquoi ne pas utiliser récursif.

 sudo chmod -R +rx /root 

Ou si vous ne l'aimez pas, vous pouvez donner à chmod plusieurs directorys:

 sudo chamod +rx /root /root/subfolder1 /root/subfolder1/subfolder2 /root/subfolder1/subfolder2/subfolderN 

Eh bien, vous pourriez faire quelque chose de légèrement plus complexe comme:

 echo "/root/subfolder1/subfolder2/subfolderN" | perl -anF'/' -e 'while($#F>0){@b=join("/",@F);`chmod +rx @b`; pop @F}' 

Pour voir ce que cela va faire, remplacez l'appel chmod par print:

 $ echo "/root/subfolder1/subfolder2/subfolderN" | perl -alnF'/' -e 'while($#F>0){@b=join("/",@F);print "chmod +rx @b"; pop @F}' chmod +rx /root/subfolder1/subfolder2/subfolderN chmod +rx /root/subfolder1/subfolder2 chmod +rx /root/subfolder1 chmod +rx /root