В 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" *