Obtener el valor numérico chmod para un archivo


101

En FreeBSD y también en Linux, ¿cómo puedo obtener el chmodvalor numérico de un archivo? Por ejemplo, en 644lugar de -rw-r--r--? Necesito una forma automática para un script Bash.

Respuestas:


160

Puede obtener el valor directamente utilizando un formato de salida estadística, por ejemplo, BSD / OS X:

stat -f "%OLp" <file>

o en Linux

stat --format '%a' <file>

y en busybox

 stat -c '%a' <file>

gracias, seleccionado como respuesta porque fue el primero y también parece ser el más simple :-) @seg_fault: stat -x YOUR_FILE me da más que solo el valor del modo.
stefan.at.wpf

55
en busyboxusostat -c '%a' <file>
Stuart Cardall

1
las comillas simples no son necesarias y --formatse pueden abreviar -c. Esto funciona:stat -c %a <file>
johny, por qué el

Necesitaba la respuesta de busybox en Ubuntu, de lo contrario 'stat: no puede leer la información del sistema de archivos para'% OLp ': No existe tal archivo o directorio'
tofutim

7

use a stat YOUR_FILEmenos que escriba un script que calcule:

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

Por cierto, lo uso stat commanden Linux box, no freebsd, porque investigar HFSprobablemente funcione con UFS.


Sí, lo encontré debajo FreeBSD box, use stat -x YOUR_FILEdebajoFreeBSD box
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' da tu permiso
PersianGulf

comando para mostrar amigable? no solo un número 666 o códigos, -rw-wxrw- sino un texto con explicaciones sobre cada permiso.
Peter Krauss

@ PeterKrauss, es mejor escribir un awkpara recuperar el resultado numérico.
PersianGulf

Gracias @PersianGulf. Hum ... No hay forma estándar de enchufar y usar ...
Peter Krauss

3

Alguna información adicional sobre stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

está stat -f %A file.txtbajo mac, devolvería 644 o algún otro número digital 3.
Weijing Jay Lin

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.