Як у FreeBSD, а також у Linux, як я можу отримати числове chmod
значення файлу? Наприклад, 644
замість -rw-r--r--
? Мені потрібен автоматичний спосіб для сценарію Bash.
Як у FreeBSD, а також у Linux, як я можу отримати числове chmod
значення файлу? Наприклад, 644
замість -rw-r--r--
? Мені потрібен автоматичний спосіб для сценарію Bash.
Відповіді:
Значення можна отримати безпосередньо, використовуючи статичний вихідний формат, наприклад, BSD / OS X:
stat -f "%OLp" <file>
або в Linux
stat --format '%a' <file>
і в зайнятому ящику
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" *