Отримайте числове значення chmod для файлу


100

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

Відповіді:


159

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

stat -f "%OLp" <file>

або в Linux

stat --format '%a' <file>

і в зайнятому ящику

 stat -c '%a' <file>

дякую, вибраний як відповідь, тому що це був перший, а також здається найпростіший :-) @seg_fault: stat -x YOUR_FILE дає мені більше, ніж просто значення режиму.
stefan.at.wpf

5
у busyboxвикористанніstat -c '%a' <file>
Stuart Cardall

1
одинарні лапки не потрібні, і --formatїх можна скоротити -c. Це працює:stat -c %a <file>
johny чому

Мені потрібна відповідь на зайняту скриньку на 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}' дає ваш дозвіл.
PersianGulf

команда показати дружні? не тільки кількість на кшталт 666 або кодів, -rw-wxrw- але і текст з поясненнями щодо кожного дозволу.
Пітер Краус

@PeterKrauss, Краще написати запит, awkщоб відновити числовий результат.
Персидська затока

Дякуємо @PersianGulf. Гум ... Немає стандартних способів підключення та програвання ....
Пітер Краус


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.