2013-02-13 4 views
11

Das muss wirklich einfach zu tun sein, aber eine leere vollständig gezeichnet haben. Ich kann die Genehmigung von Dateien sehen von ls -la, die so etwas wie geben kann:UNIX/Linux/Mac OSX bekommen Erlaubnis der Datei als Nummer

-rwxr-xr-x 1 james staff 68 8 Feb 13:33 basic.sh* 
-rw-r--r-- 1 james staff 68 8 Feb 13:33 otherFile.sh* 

Wie ich das mit chmod wie chmod 755 otherFile.sh für den Einsatz in einer Reihe übersetzen Sie (mit aus der manuellen Konvertierung tun).

+1

Nur ein Hinweis, der Ihre Recherche erleichtern könnte: Mac OS X ist BSD UNIX und jede UNIX-Art, das Problem zu lösen, wird ebenfalls funktionieren. (Wie viele Linux-Wege.) – Jesper

+0

Das ist ein toller Rat, danke @Jesper. – AJP

Antwort

18

stat -f "%Lp" [filename] funktioniert für mich in OS X 10.8.

+0

Funktioniert nicht am 10.7.5 – AJP

+0

Seltsam, die Manpage für 'stat' in 10.7 lässt es so aussehen, als ob diese Optionen so funktionieren sollten, wie sie es in 10.8 tun. Welchen Fehler bekommst du? –

+1

Hmmm, das ist seltsam, ich dachte, deine Antwort wäre etwas wie: "stat -c"% a% w "[Dateiname]' was nicht funktioniert. Ihre Antwort funktioniert jedoch. – AJP

1

Sie sollten den stat-Befehl anstelle von ls verwenden können. Vom Blick auf den manpage, sollte diese Arbeit die Dateiberechtigungen zu erhalten:

for f in dir/* 
do 
    perms=$(stat -f '0%Hp%Mp%Lp' $f) 
    echo "$f has permissions $perms" 
done 

(obwohl ich nicht an meinem Mac im Moment, und deshalb kann es nicht testen).

+0

@AJP, von weiterem Studium der Manpage denke ich, dass Sie Hp, Mp und Lp angeben müssen, um alle Dateiberechtigungen zu erhalten. Bitte sehen Sie meine Bearbeitung. – trojanfoe

+0

ja mein Edit war nur um zu zeigen, dass ich nur den '755' Teil wollte, damit ich ihn mit chmod benutzen konnte, um die Berechtigungen zum Lesen, Schreiben und Ausführen zu ändern. Aber Ihre Antwort gibt die vollständigen Berechtigungen. – AJP

+0

@AJP Ich verstehe nicht, wie beide Antworten stimmen könnten. Sagen Sie, dass 'stat -f'% Hp% Mp% Lp'' ** und ** 'stat -f'% Lp'' identische Ergebnisse liefern? – trojanfoe