Получить числовое значение chmod для файла

101

В FreeBSD, а также в Linux, как я могу получить числовое chmodзначение файла? Например, 644вместо -rw-r--r--? Мне нужен автоматический способ для сценария Bash.

stefan.at.wpf
источник

Ответы:

160

Вы можете получить значение напрямую, используя формат вывода статистики, например, BSD / OS X:

stat -f "%OLp" <file>

или в линуксе

stat --format '%a' <file>

и в busybox

 stat -c '%a' <file>
teppic
источник
спасибо, выбрано в качестве ответа, потому что оно было первым, а также, кажется, самым простым :-) @seg_fault: stat -x YOUR_FILE дает мне больше, чем просто значение режима.
stefan.at.wpf
5
в busyboxиспользованииstat -c '%a' <file>
Стюарт Кардалл
1
одинарные кавычки не нужны и --formatмогут быть сокращены -c. Это работает:stat -c %a <file>
Джонни, почему
Мне понадобился ответ busybox в Ubuntu, в противном случае «stat: невозможно прочитать информацию о файловой системе для«% OLp »: такого файла или каталога нет»
tofutim
7

используйте, 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
PersianGulf
stat -r YOUR_FILE |awk '{print $3}' дает ваше разрешение.
Персидский залив
Команду показать дружелюбно? не только число, как 666 или коды, -rw-wxrw- но текст с объяснениями о каждом разрешении.
Питер Краусс
@PeterKrauss, лучше написать, awkчтобы получить числовой результат.
Персидский залив
Спасибо @PersianGulf. Hum ... Нет подключи и играй стандартным способом ....
Питер Краусс
3

Некоторая дополнительная информация о stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx
Матин Улхак
источник
это stat -f %A file.txtпод Mac, он вернул бы 644 или какой-то другой 3-х цифровой номер.
Вейкин Джей Лин
2

попробуйте это, чтобы перечислить все

stat --format "%a  %n" *
Хатем Бадави
источник