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.
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:
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>
busyboxEinsatzstat -c '%a' <file>
--formatkönnen abgekürzt werden -c. Dies funktioniert:stat -c %a <file>
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.
FreeBSD box, verwenden Sie stat -x YOUR_FILEunterFreeBSD box
stat -r YOUR_FILE |awk '{print $3}' gibt deine Erlaubnis.
666 oder Codes, -rw-wxrw- sondern ein Text mit Erläuterungen zu jeder Erlaubnis.
awkzu schreiben, um ein numerisches Ergebnis abzurufen.
Einige zusätzliche Informationen zu stat:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txtunter Mac, es 644 oder eine andere 3 digitale Zahl zurückkehren würde.
Versuchen Sie dies, um alle aufzulisten
stat --format "%a %n" *