Methode 1 - stat
Sie können den statBefehl verwenden, um die Berechtigungsbits abzurufen. statist 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, grepum 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 statunterschiedlich sind, können Sie diesen Befehl in einen lsb_release -aBefehl einschließen und die entsprechende Version basierend auf dem Betriebssystem aufrufen. Nicht ideal, aber praktikabel. Erkenne , dass lsb_releaseist 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 findund den printfSchalter.
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 @pvund die Ausgabe von stat()direkt bearbeiten:
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664