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


101

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

Ответы:


160

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

stat -f "%OLp" <file>

или в линуксе

stat --format '%a' <file>

и в busybox

 stat -c '%a' <file>

спасибо, выбрано в качестве ответа, потому что оно было первым, а также, кажется, самым простым :-) @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 ... Нет подключи и играй стандартным способом ....
Питер Краусс


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.