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.

stefan.at.wpf
quelle

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>
teppisch
quelle
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.

Persischer Golf
quelle
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
Mateen Ulhaq
quelle
es ist stat -f %A file.txtunter Mac, es 644 oder eine andere 3 digitale Zahl zurückkehren würde.
Weijing Jay Lin
2

Versuchen Sie dies, um alle aufzulisten

stat --format "%a  %n" *
Hatem Badawi
quelle