En FreeBSD y también en Linux, ¿cómo puedo obtener el chmod
valor numérico de un archivo? Por ejemplo, en 644
lugar de -rw-r--r--
? Necesito una forma automática para un script Bash.
En FreeBSD y también en Linux, ¿cómo puedo obtener el chmod
valor numérico de un archivo? Por ejemplo, en 644
lugar de -rw-r--r--
? Necesito una forma automática para un script Bash.
Respuestas:
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>
busybox
usostat -c '%a' <file>
--format
se pueden abreviar -c
. Esto funciona:stat -c %a <file>
use a stat YOUR_FILE
menos 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 command
en Linux box
, no freebsd
, porque investigar HFS
probablemente funcione con UFS
.
FreeBSD box
, use stat -x YOUR_FILE
debajoFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
da tu permiso
666
o códigos, -rw-wxrw-
sino un texto con explicaciones sobre cada permiso.
awk
para recuperar el resultado numérico.
Alguna información adicional sobre stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
bajo mac, devolvería 644 o algún otro número digital 3.
intente esto para enumerar todo
stat --format "%a %n" *