Obtenir la valeur numérique chmod pour un fichier


101

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:


160

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>

merci, sélectionné comme réponse car c’était le premier et semble aussi être le plus simple :-) @seg_fault: stat -x YOUR_FILE m’apporte plus que la valeur de mode.
stefan.at.wpf

5
en cours d' busyboxutilisationstat -c '%a' <file>
Stuart Cardall

1
les guillemets simples ne sont pas nécessaires et --formatpeuvent être abrégés -c. Cela fonctionne:stat -c %a <file>
johny pourquoi

J'avais besoin de la réponse busybox sur Ubuntu, sinon 'stat: impossible de lire les informations du système de fichiers pour'% OLp ': pas de fichier ou de répertoire de ce type'
tofutim

7

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.


Oui, je l'ai trouvé sous FreeBSD box, utilisez stat -x YOUR_FILEsousFreeBSD box
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' donne votre permission.
PersianGulf

commande de montrer amical? non seulement un nombre 666 ou des codes, -rw-wxrw- mais un texte avec des explications sur chaque permission.
Peter Krauss

@PeterKrauss, il est préférable d'écrire un awkrésultat numérique.
PersianGulf

Merci @PersianGulf. Hum ... Pas de plug-and-play standard ....
Peter Krauss

3

Quelques informations supplémentaires sur stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

il est stat -f %A file.txtsous mac, il retournerait 644 ou un autre 3 nombre numérique.
Weijing Jay Lin

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.