Am 21.02.2006 um 18:44 Uhr schrieb Bernd Kloss:
dk@in-telegence.net schrieb am 21.02.06 17:15:03:
cd /home for benutzer in `find . -maxdepth 1 -type d ! -name ".*"` do chown -R $benutzer $benutzer done
Kann ich nachfragen wg Nachhilfe? Der find-Befehl sucht alles
-maxdepth 1: mit einer maximalen Tiefe von 1. Also nur die Befehlsebene /home und ein Directory drunter Nein, nur das aktuelle Verzeichnis. Also werden damit die Benutzernamen anhand der Namer der home-Verzeichnisse herausgefunden. Versteckte Benutzer-Verzeichnisse sind ausgeschlossen, weil sie für dein Anliegen irrelevant sind.
-type d : in den Directories, aber dann behandelt er ja nicht die files, die einen punkt vorne dran haben Damit werden auch nicht die files gesucht, sondern die Benutzer, s. o.
! -name ".*" außer vom Muster .* diese Verneinung kapier ich nicht Das -name heißt doch der Filename ohne den Pfad vorne dran und dann kommt das Muster also alle Files, die mit einem punkt beginnen. Das Ausrufzeichen heißt doch *nicht* oder kapier ich weniger als ich dachte.
Dazu sage ich jetzt nichts ;-))
dann kommt die Laufanweisung, in der der chown so angewendet wird, dass alle Verzeichnisse ihren Namen als owner bekommen
Und jetzt kommt die größte unbeantwortete Frage: das mit der Variablen benutzer. Woher weiß der Rechner, dass er jetzt alle Verzeichnisse durchgehen muss und die Laufvariable nicht 1,2,3 sondern anton, berta, brigitte, caesar heißt???
In Langform: "for benutzer in" weist der Variablen benutzer das folgende zu. `find . -maxdepth 1 -type d ! -name ".*"` findet im home-Verzeichnis (es wurde mit cd /home dahin gewechselt) alle nicht-versteckten User-Verzeichnisse, die normalerweise auch den Benutzernamen des Users haben. Diese Verzeichnisnamen werden der Variablen benutzer zugewiesen. chown -R $benutzer $benutzer ändert den Benutzer auf die Variable benutzer für alle Dateien und Verzeichnisse unterhalb und einschließlich vom Verzeichnis benutzer. cu PeeGee