В FreeBSD, а также в Linux, как я могу получить числовое chmodзначение файла? Например, 644вместо -rw-r--r--? Мне нужен автоматический способ для сценария Bash.
В FreeBSD, а также в Linux, как я могу получить числовое chmodзначение файла? Например, 644вместо -rw-r--r--? Мне нужен автоматический способ для сценария Bash.
Ответы:
Вы можете получить значение напрямую, используя формат вывода статистики, например, BSD / OS X:
stat -f "%OLp" <file>
или в линуксе
stat --format '%a' <file>
и в busybox
stat -c '%a' <file>
busyboxиспользованииstat -c '%a' <file>
--formatмогут быть сокращены -c. Это работает:stat -c %a <file>
используйте, stat YOUR_FILEесли не пишите скрипт, который рассчитывает:
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
Кстати, я использую stat commandна Linux box, не freebsd, потому что это расследование , HFSвероятно , работать с UFS.
FreeBSD box, используйте stat -x YOUR_FILEподFreeBSD box
stat -r YOUR_FILE |awk '{print $3}' дает ваше разрешение.
666 или коды, -rw-wxrw- но текст с объяснениями о каждом разрешении.
awkчтобы получить числовой результат.
Некоторая дополнительная информация о stat:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txtпод Mac, он вернул бы 644 или какой-то другой 3-х цифровой номер.
попробуйте это, чтобы перечислить все
stat --format "%a %n" *