Sous FreeBSD et aussi sous Linux, comment puis-je obtenir la chmod
valeur numérique d'un fichier? Par exemple, 644
au 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 chmod
valeur numérique d'un fichier? Par exemple, 644
au 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>
busybox
utilisationstat -c '%a' <file>
--format
peuvent être abrégés -c
. Cela fonctionne:stat -c %a <file>
utilisez à stat YOUR_FILE
moins 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 command
sur Linux box
, non freebsd
, parce qu'il enquête HFS
probablement travailler avec UFS
.
FreeBSD box
, utilisez stat -x YOUR_FILE
sousFreeBSD 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.
awk
ré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.txt
sous mac, il retournerait 644 ou un autre 3 nombre numérique.
essayez ceci pour lister tout
stat --format "%a %n" *