Vielleicht werde ich alt, sollte aber. und ... von keinem Befehl ignoriert werden? AFAIK diese sind wegen des Dateisystems da und dienen keinem anderen Zweck.
Das würde keinen Sinn machen, einfach weil du gezielt die Namen gefüttert hast .
und ..
von deinem chown chown <...> .*
. Warum sollten chown
Sie in einem solchen Fall denken, dass Sie nicht das gemacht haben, was Sie wollten?
Die Namen wurden an chown weitergegeben, da die Shell sie basierend auf den von Ihnen angegebenen Shell-Glob-Erweiterungskriterien erweitert hat, die sowohl mit .
als auch ..
mit jedem anderen Punktverzeichnis im aktuellen Verzeichnis übereinstimmten . Da Sie gesagt haben chown
, dass Sie rekursiv arbeiten sollten, ging es in diese Verzeichnisse und alles darunter. Dies bedeutet, dass es "hinabgestiegen" wurde ..
und dann von dort weiter arbeitete.
Sie können dies selbst ausprobieren, indem echo .*
Sie die Namen sehen, die in die Kommandozeile von chown eingegeben wurden. Man vergleiche das mit dem Ausgang des echo *
mit shopt dotglob
ein- und ausgeschaltet bzw. ( shopt -s dotglob
einzuschalten, shopt -u dotglob
auszuschalten). Verwenden Sie ls
eher als echo
die erste Rekursionsstufe zu sehen.
Es gibt durchaus stichhaltige Gründe, um chown -R
entweder eine .
oder zu laufen ..
. Am offensichtlichsten scheint es, ein Archiv zu extrahieren, das falsche Besitzinformationen zu Dateien und allen Dateien in einem einzigen Verzeichnis enthält. In einem solchen Fall chown -R abc:xyz .
ist es absolut vernünftig, aus dem unkomprimierten Verzeichnis heraus den Besitz auf ein vernünftiges System auf Ihrem System zurückzusetzen.
Wenn Sie Ihre Shell wollen nicht erweitern .*
in .
und ..
dann müssen Sie sicherstellen, dass es für die jeweilige Schale richtig eingestellt ist. Zitate aus der GNU-bash 4.2.37 (1) -release (aktuell auf Debian Wheezy zum Zeitpunkt dieses Schreibens, Debian- bash
Paketversion 4.2+dfsg-0.1+deb7u3
auf amd64-Architektur) Manpage:
GLOBIGNORE
Eine durch Doppelpunkte getrennte Liste von Mustern, die den Dateinamen definiert, der von der Erweiterung des Pfadnamens ignoriert werden soll. Wenn ein Dateiname, der mit einem Pfadnamen-Erweiterungsmuster übereinstimmt, auch einem der Muster in GLOBIGNORE entspricht, wird er aus der Liste der Übereinstimmungen entfernt.
Denken Sie daran, dass ein Teil der Unix-Philosophie darin besteht, "darauf zu vertrauen, dass der Benutzer weiß, was er tut".