Ottieni il valore numerico chmod per un file


101

In FreeBSD e anche in Linux, come posso ottenere il chmodvalore numerico di un file? Ad esempio, 644invece di -rw-r--r--? Ho bisogno di un modo automatico per uno script Bash.

Risposte:


160

È 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>

grazie, selezionato come risposta perché era il primo e sembra anche il più semplice :-) @seg_fault: stat -x YOUR_FILE mi dà più del semplice valore della modalità.
stefan.at.wpf,

5
in busyboxusostat -c '%a' <file>
Stuart Cardall

1
le virgolette singole non sono necessarie e --formatpossono essere abbreviate -c. Funziona così:stat -c %a <file>
johny perché il

Avevo bisogno della risposta busybox su Ubuntu, altrimenti 'stat: impossibile leggere le informazioni sul file system per'% OLp ': nessun file o directory del genere'
tofutim

7

utilizzare stat YOUR_FILEse 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 commandsu Linux box, non freebsd, perché indagare HFSprobabilmente funzionerà con UFS.


Sì, l'ho trovato sotto FreeBSD box, utilizzare stat -x YOUR_FILEsottoFreeBSD box
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' dà il tuo permesso.
Golfo Persico

comando per mostrare amichevole? non solo un numero 666 o codici -rw-wxrw- ma un testo con spiegazioni su ciascuna autorizzazione.
Peter Krauss,

@PeterKrauss, è meglio scrivere un risultato awkper recuperare il risultato numerico.
Golfo Persico,

Grazie @PersianGulf. Hum ... Nessun modo standard plug-and-play ....
Peter Krauss il

3

Alcune informazioni aggiuntive su stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

è stat -f %A file.txtsotto mac, restituirebbe 644 o altri 3 numeri digitali.
Weijing Jay Lin,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.