Метод № 1 - стат
Вы можете использовать stat
команду, чтобы получить биты прав доступа. stat
доступно в большинстве Unixes (OSX, BSD, а не AIX из того, что я могу найти). Это должно работать на большинстве Unixes, кроме OSX и BSD из того, что я могу найти.
$ stat -c "%a" <file>
пример
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Используйте эту команду:
$ stat -c "%a" afile.txt
664
И используйте простой, grep
чтобы увидеть, является ли режим разрешений групп 6 или 7.
$ stat -c "%a" afile.txt | grep ".[67]."
Для OSX и BSD вы должны использовать эту форму stat
, stat -f
(или , возможно stat -x
), и разобрать соответственно. Поскольку параметры stat
отличаются, вы можете заключить эту команду в lsb_release -a
команду и вызвать соответствующую версию в зависимости от ОС. Не идеально, но выполнимо. Поймите, что lsb_release
это доступно только для дистрибутивов Linux, поэтому нужно будет найти другую альтернативу для тестирования других ОС Unix.
Метод № 2 - найти
Я думаю, что эта команда может служить вам лучше, хотя. Я использую find
и printf
выключатель.
пример
$ find a -prune -printf '%m\n'
664
Метод № 3 - Perl
Perl может быть более переносимым способом сделать это в зависимости от ОС, которую вы пытаетесь охватить.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
ПРИМЕЧАНИЕ . Вышеприведенное использует stat()
функцию Perl для запроса битов файловой системы.
Вы можете сделать это более компактным, отказавшись от использования массива @pv
и stat()
непосредственно работая с выводом :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664