In FreeBSD e anche in Linux, come posso ottenere il chmod
valore numerico di un file? Ad esempio, 644
invece di -rw-r--r--
? Ho bisogno di un modo automatico per uno script Bash.
In FreeBSD e anche in Linux, come posso ottenere il chmod
valore numerico di un file? Ad esempio, 644
invece di -rw-r--r--
? Ho bisogno di un modo automatico per uno script Bash.
Risposte:
È possibile ottenere il valore direttamente utilizzando un formato di output stat, ad esempio BSD / OS X:
stat -f "%OLp" <file>
o in Linux
stat --format '%a' <file>
e in busybox
stat -c '%a' <file>
busybox
usostat -c '%a' <file>
--format
possono essere abbreviate -c
. Funziona così:stat -c %a <file>
utilizzare stat YOUR_FILE
se non scrivere script che calcolano:
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
A proposito, io uso stat command
su Linux box
, non freebsd
, perché indagare HFS
probabilmente funzionerà con UFS
.
FreeBSD box
, utilizzare stat -x YOUR_FILE
sottoFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
dà il tuo permesso.
666
o codici -rw-wxrw-
ma un testo con spiegazioni su ciascuna autorizzazione.
awk
per recuperare il risultato numerico.
Alcune informazioni aggiuntive su stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
sotto mac, restituirebbe 644 o altri 3 numeri digitali.
prova questo per elencare tutto
stat --format "%a %n" *