Metoda nr 1 - stat
Możesz użyć stat
polecenia, aby uzyskać bity uprawnień. stat
jest dostępny na większości Uniksów (OSX, BSD, a nie AIX z tego, co mogę znaleźć). To powinno działać na większości Uniksów, z wyjątkiem OSX i BSD z tego, co mogę znaleźć.
$ stat -c "%a" <file>
Przykład
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Użyj tego polecenia:
$ stat -c "%a" afile.txt
664
I użyj prostego, grep
aby sprawdzić, czy tryb uprawnień dla grup to 6 czy 7.
$ stat -c "%a" afile.txt | grep ".[67]."
Dla OSX i BSD trzeba by skorzystać z tej formy stat
, stat -f
(albo stat -x
) i analizować odpowiednio. Ponieważ opcje stat
są różne, możesz zawinąć to polecenie w lsb_release -a
polecenie i wywołać odpowiednią wersję na podstawie systemu operacyjnego. Nie idealny, ale wykonalny. Zdaj sobie sprawę, że lsb_release
jest to dostępne tylko dla dystrybucji Linuksa, więc należałoby opracować inną alternatywę do testowania innych systemów uniksowych.
Metoda nr 2 - znajdź
Myślę, że to polecenie może ci lepiej służyć. I sprawia, że wykorzystanie find
i printf
przełącznik.
Przykład
$ find a -prune -printf '%m\n'
664
Metoda nr 3 - Perl
Perl może być bardziej przenośnym sposobem na zrobienie tego w zależności od systemów operacyjnych, które próbujesz zainstalować.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
UWAGA: Powyższe wykorzystuje stat()
funkcję Perla do zapytania bitów systemu plików.
Możesz uczynić to bardziej kompaktowym, rezygnując z używania tablicy @pv
i zajmując się wynikami stat()
:
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664