Sous FreeBSD et aussi sous Linux, comment puis-je obtenir la chmodvaleur numérique d'un fichier? Par exemple, 644au lieu de -rw-r--r--? J'ai besoin d'un moyen automatique pour un script Bash.
Sous FreeBSD et aussi sous Linux, comment puis-je obtenir la chmodvaleur numérique d'un fichier? Par exemple, 644au lieu de -rw-r--r--? J'ai besoin d'un moyen automatique pour un script Bash.
Réponses:
Vous pouvez obtenir la valeur directement en utilisant un format de sortie stat, par exemple BSD / OS X:
stat -f "%OLp" <file>
ou sous Linux
stat --format '%a' <file>
et dans busybox
stat -c '%a' <file>
busyboxutilisationstat -c '%a' <file>
--formatpeuvent être abrégés -c. Cela fonctionne:stat -c %a <file>
utilisez à stat YOUR_FILEmoins d'écrire un script qui calcule:
rwx rwx rwx ==> ( r = 4 ) if set + ( w = 2) if set + (x = 1) if set , for example:
You have :
-rw-wxrw- => (4+2+0)(0+2+1)(4+2+) = 0636
First argument before 9 permissions is one of :
- = regular file
d = directory
b = block device
c = character device
s = socket
p = pipe
f = fifo
Soit dit en passant, je l' utilise stat commandsur Linux box, non freebsd, parce qu'il enquête HFSprobablement travailler avec UFS.
FreeBSD box, utilisez stat -x YOUR_FILEsousFreeBSD box
stat -r YOUR_FILE |awk '{print $3}' donne votre permission.
666 ou des codes, -rw-wxrw- mais un texte avec des explications sur chaque permission.
awkrésultat numérique.
Quelques informations supplémentaires sur stat:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txtsous mac, il retournerait 644 ou un autre 3 nombre numérique.
essayez ceci pour lister tout
stat --format "%a %n" *