Obtém o valor numérico chmod para um arquivo

82

No FreeBSD e também no Linux, como posso obter o valor numérico chmod de um arquivo? Por exemplo, 644 em vez de -rw-r--r-- ? Eu preciso de uma maneira automática para um script Bash.

    
por stefan.at.wpf 01.09.2012 / 20:20

4 respostas

137

Você pode obter o valor diretamente usando um formato de saída stat, por exemplo, BSD / OS X:

stat -f "%OLp" <file>

ou no Linux

stat --format '%a' <file>
    
por 01.09.2012 / 22:12
7

use stat YOUR_FILE , a menos que o script de gravação 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

A propósito, eu uso stat command on Linux box , não freebsd , porque ele investiga HFS provavelmente funciona com UFS .

    
por 01.09.2012 / 20:55
1

Algumas informações adicionais sobre stat :

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx
    
por 28.05.2017 / 00:30
0

tente listar todos

stat --format "%a  %n" *
    
por 05.08.2018 / 18:41