W jaki sposób mogę uzyskać chmod
wartość liczbową pliku we FreeBSD, a także w systemie Linux ? Na przykład 644
zamiast -rw-r--r--
? Potrzebuję automatycznego sposobu na skrypt Bash.
W jaki sposób mogę uzyskać chmod
wartość liczbową pliku we FreeBSD, a także w systemie Linux ? Na przykład 644
zamiast -rw-r--r--
? Potrzebuję automatycznego sposobu na skrypt Bash.
Odpowiedzi:
Możesz uzyskać wartość bezpośrednio, używając formatu wyjściowego statystyki, np. BSD / OS X:
stat -f "%OLp" <file>
lub w systemie Linux
stat --format '%a' <file>
i w busyboksie
stat -c '%a' <file>
busybox
użyciustat -c '%a' <file>
--format
można je skracać -c
. Działa to:stat -c %a <file>
używaj, stat YOUR_FILE
chyba że napiszesz skrypt, który oblicza:
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
Nawiasem mówiąc, używam stat command
na Linux box
, nie freebsd
, ponieważ bada HFS
prawdopodobnie praca z UFS
.
FreeBSD box
, użyj stat -x YOUR_FILE
underFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
daje twoją zgodę.
666
lub kody, -rw-wxrw-
ale tekst z objaśnieniami dotyczącymi każdego pozwolenia.
awk
aby pobrać wynik liczbowy.
Niektóre dodatkowe informacje na temat stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
pod Mac, zwróci 644 lub inny 3 cyfrowy numer.
spróbuj to, aby wyświetlić listę wszystkich
stat --format "%a %n" *