Ist es möglich, beim Auflisten eines Verzeichnisses numerische Unix-Berechtigungen wie 644 anstelle der symbolischen Ausgabe -rw-rw-r-- anzuzeigen?
Vielen Dank.
unix
command-line
permissions
Jon Winstanley
quelle
quelle
alias cls="ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\"%0o \",k);print}'"
chmod 777 dir
Ihr Befehl Berechtigungen als767
Am nächsten kann ich mir vorstellen (es einfach genug zu halten)
stat
, vorausgesetzt, Sie wissen, nach welchen Dateien Sie suchen. Wenn Sie dies nicht tun,*
können Sie die meisten von ihnen finden:Es handhabt klebrig, suid und Gesellschaft aus der Box:
quelle
stat -f '%A %N' *
macht das gleiche auf einem Mac (FreeBSD)stat
ist nichtls
deshalb ist dies nicht die richtige Antwort. Ich glaube jedoch, dass dies die richtige Antwort im Zusammenhang mit der gewünschten Ausgabe ist. Wennawk
es in einer Pipefind
erlaubtstat
ist , sollte es erlaubt sein, wo es gerufen wird-exec
; dann können Siestat
direkt ohne*
stat -c '%a %n' * **/*
.Sie können einfach GNU find verwenden.
quelle
-maxdepth 1
Option haben, da es sonst den gesamten Verzeichnisbaum durchläuft.Sie können den folgenden Befehl verwenden
Sie können auch ein beliebiges
filename
oderdirectoryname
anstelle von verwenden*
, um ein bestimmtes Ergebnis zu erhalten.Auf dem Mac können Sie verwenden
quelle
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
macOS 10.14.4 enthaltenen Informationen verwenden, sollte der Befehl lautenstat -f "%Lp %N" *
.%Lp
scheint das gleiche zu drucken wie%A
.@ The MYYN
wow, schön awk! Aber was ist mit suid, sgid und sticky bit?
Sie müssen Ihren Filter mit s und t erweitern, sonst zählen sie nicht und Sie erhalten das falsche Ergebnis. Um die Oktalzahl für diese speziellen Flags zu berechnen, ist die Vorgehensweise dieselbe, aber der Index liegt bei 4, 7 und 10. Die möglichen Flags für Dateien mit gesetztem Ausführungsbit sind
---s--s--t
amd für Dateien ohne gesetztes Ausführungsbit---S--S--T
Zum Test:
wird darin enden, dass:
und
wird geben:
quelle
alias "lsmod=ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
Verwenden Sie diese Option, um die numerischen Unix-Berechtigungswerte (Oktalwerte) und den Dateinamen anzuzeigen.
Verwenden Sie diese Option, um die numerischen Unix-Berechtigungswerte (Oktalwerte) und das sgid- und Sticky-Bit des Ordners, den Benutzernamen des Eigentümers, den Gruppennamen, die Gesamtgröße in Byte und den Dateinamen anzuzeigen.
Fügen
%y
Sie hinzu, wenn Sie die Zeit der letzten Änderung in einem für Menschen lesbaren Format benötigen. Weitere Optionen finden Sie unter stat .Bessere Version mit einem Alias
Die Verwendung eines Alias ist eine effizientere Methode, um das zu erreichen, was Sie benötigen, und es enthält auch Farbe. Im Folgenden werden Ihre Ergebnisse zuerst nach Gruppenverzeichnissen geordnet, in Farbe und Druckgrößen in lesbarem Format (z. B. 1K 234M 2G) angezeigt. Bearbeiten Sie Ihre
~/.bashrc
und fügen Sie einen Alias für Ihr Konto oder global durch Bearbeiten hinzu/etc/profile.d/custom.sh
Durch Eingabe
cls
werden Ihre neuen LS-Befehlsergebnisse angezeigt.Ordnerbaum
Fügen Sie während der Bearbeitung von bashrc oder custom.sh den folgenden Alias hinzu, um eine grafische Darstellung
lstree
anzuzeigen, in der durch Eingabe Ihre aktuelle Ordnerbaumstruktur angezeigt wirdEs würde anzeigen:
quelle
Sie verwenden ls nicht, um die Berechtigungsinformationen einer Datei abzurufen. Sie verwenden den Befehl stat. Sie erhalten die gewünschten Zahlenwerte. Der "Unix-Weg" besagt, dass Sie Ihr eigenes Skript mit ls (oder 'echo *') und stat erfinden sollten und was auch immer Sie möchten, um die Informationen in dem gewünschten Format anzugeben.
quelle
Aufbauend auf der gewählten Antwort und dem Vorschlag, einen Alias zu verwenden , habe ich ihn in eine Funktion konvertiert, sodass die Übergabe eines Verzeichnisses an die Liste möglich ist.
quelle