No FreeBSD e também no Linux, como posso obter o chmod
valor numérico de um arquivo? Por exemplo, em 644
vez de -rw-r--r--
? Eu preciso de uma maneira automática para um script Bash.
No FreeBSD e também no Linux, como posso obter o chmod
valor numérico de um arquivo? Por exemplo, em 644
vez de -rw-r--r--
? Eu preciso de uma maneira automática para um script Bash.
Respostas:
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>
e no busybox
stat -c '%a' <file>
busybox
usostat -c '%a' <file>
--format
podem ser abreviadas -c
. Isso funciona:stat -c %a <file>
use, a stat YOUR_FILE
menos que escreva um 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
By the way, eu uso stat command
em Linux box
, não freebsd
, porque investigar HFS
provavelmente trabalhar com UFS
.
FreeBSD box
, uso stat -x YOUR_FILE
sobFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
dá sua permissão.
666
códigos, -rw-wxrw-
mas um texto com explicações sobre cada permissão.
awk
para recuperar o resultado numérico.
Algumas informações adicionais sobre stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
sob mac, retornaria 644 ou algum outro número digital 3.
tente isso para listar todos
stat --format "%a %n" *