Methode 1 - stat
Sie können den stat
Befehl verwenden, um die Berechtigungsbits abzurufen. stat
ist auf den meisten Unixen verfügbar (OSX, BSD, nicht AIX von dem, was ich finden kann). Dies sollte auf den meisten Unixen funktionieren, außer auf OSX & BSD, soweit ich das finde.
$ stat -c "%a" <file>
Beispiel
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Verwenden Sie diesen Befehl:
$ stat -c "%a" afile.txt
664
Verwenden Sie eine einfache Methode, grep
um festzustellen, ob der Gruppenberechtigungsmodus 6 oder 7 ist.
$ stat -c "%a" afile.txt | grep ".[67]."
Für OS X und BSD müßten Sie diese Form verwenden stat
, stat -f
(oder vielleicht stat -x
), und entsprechend zu analysieren. Da die Optionen stat
unterschiedlich sind, können Sie diesen Befehl in einen lsb_release -a
Befehl einschließen und die entsprechende Version basierend auf dem Betriebssystem aufrufen. Nicht ideal, aber praktikabel. Erkenne , dass lsb_release
ist für Linux - Distributionen nur so eine weitere Alternative müssten für die Prüfung anderer Unix - Betriebssysteme entwickelt werden.
Methode 2 - finden
Ich denke, dieser Befehl könnte Ihnen jedoch besser dienen. Ich benutze find
und den printf
Schalter.
Beispiel
$ find a -prune -printf '%m\n'
664
Methode 3 - Perl
Perl ist möglicherweise eine portablere Methode, um dies zu tun, abhängig von den Betriebssystemen, die Sie abdecken möchten.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
HINWEIS: Im obigen Abschnitt wird die Perl- stat()
Funktion zum Abfragen der Dateisystembits verwendet.
Sie können dies kompakter gestalten, indem Sie auf die Verwendung eines Arrays verzichten @pv
und die Ausgabe von stat()
direkt bearbeiten:
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664