Ruft den numerischen Wert chmod für eine Datei ab


100

Wie kann ich unter FreeBSD und auch unter Linux den numerischen chmodWert einer Datei ermitteln? Zum Beispiel 644anstelle von -rw-r--r--? Ich brauche einen automatischen Weg für ein Bash-Skript.

Antworten:


159

Sie können den Wert direkt mit einem stat-Ausgabeformat abrufen, z. B. BSD / OS X:

stat -f "%OLp" <file>

oder unter Linux

stat --format '%a' <file>

und in busybox

 stat -c '%a' <file>

Danke, als Antwort ausgewählt, weil es das erste war und auch das einfachste zu sein scheint :-) @seg_fault: stat -x YOUR_FILE gibt mir mehr als nur den Moduswert.
stefan.at.wpf

5
im busyboxEinsatzstat -c '%a' <file>
Stuart Cardall

1
einfache Anführungszeichen sind nicht erforderlich und --formatkönnen abgekürzt werden -c. Dies funktioniert:stat -c %a <file>
Johny, warum

Ich brauchte die Antwort auf die Busybox unter Ubuntu, andernfalls kann 'stat: keine Dateisysteminformationen für'% OLp 'lesen: Keine solche Datei oder kein solches Verzeichnis'
bis zum

7

Verwenden Sie es stat YOUR_FILEsei denn, Sie schreiben ein Skript, das Folgendes berechnet:

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

Übrigens benutze ich stat commandweiter Linux boxnicht freebsd, da es HFSwahrscheinlich mit recherchieren funktioniert UFS.


Ja, ich fand es unter FreeBSD box, verwenden Sie stat -x YOUR_FILEunterFreeBSD box
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' gibt deine Erlaubnis.
PersianGulf

Kommando freundlich zu zeigen? nicht nur eine Zahl wie 666 oder Codes, -rw-wxrw- sondern ein Text mit Erläuterungen zu jeder Erlaubnis.
Peter Krauss

@PeterKrauss, Es ist besser, ein awkzu schreiben, um ein numerisches Ergebnis abzurufen.
PersianGulf

Danke @PersianGulf. Hum ... Kein Plug-and-Play-Standard ....
Peter Krauss

2

Einige zusätzliche Informationen zu stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

es ist stat -f %A file.txtunter Mac, es 644 oder eine andere 3 digitale Zahl zurückkehren würde.
Weijing Jay Lin

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.