Nach dem Lesen der Frage Wenn Sie "ls -a" eingeben, welche Bedeutung hat "." und ".."? Ich habe eine ähnliche.
Warum anzeigen .
? Ich meine, gibt es ein Verzeichnis, in dem cd .
es nicht funktionieren würde? Wie ist es für einen Benutzer hilfreich, diese Zeile jedes Mal zu sehen?
directory-structure
cd-command
Arseni Mourzenko
quelle
quelle
cd .
kann dies fehlschlagen, z. B. wenn Sie jetzt keine Berechtigung zum Wechseln in das Verzeichnis haben (dies kann passieren, wenn der Prozess nach dem Ändern seines Arbeitsverzeichnisses zu einem anderen Benutzer geändert wurde oder wenn sich die Berechtigungen für das Verzeichnis geändert haben, nachdem der Prozess sein Verzeichnis geändert hat Verzeichnis).mkdir /tmp/foobar; cd /tmp/foobar; rmdir /tmp/foobar; cd .
ergibt einen Fehler:...: No such file or directory
Antworten:
Der Grund für das
ls -a
Anzeigen.
und..
hat nichts mit dem Dienstprogramm und allem, was mit Unix- (und Linux-) Dateisystemen zu tun hat, zu tun.Alles ist eine Datei.
Verzeichnisse sind wirklich Dateien, die Listen von Dateien enthalten. "Innerhalb" eines bestimmten Verzeichnisses, da dies die Perspektive des Benutzers ist, wenn nicht genau die Perspektive des Dateisystems, gibt es zwei spezielle Dateien.
.
, verweist auf das aktuelle Arbeitsverzeichnis. Dies wird von Menschen fast täglich verwendet, wenn sie beispielsweise einen Befehl im aktuellen Verzeichnis über ausführen./scriptname
...
Verzeichnis verweist auf das übergeordnete CWD-Verzeichnis. Like.
,..
wird jeden Tag von jedem verwendet, der Verzeichnisse über in das übergeordnete Verzeichnis ändern möchtecd ..
.Der Systemaufruf
getdents()
, bei dem es sich um das Arbeitspferd auf der Systemseite handeltls
, listet einfach alle Dateien in einem Verzeichnis auf. (Denken Sie daran: Alles ist eine Datei. Geräte, Verzeichnisse, Sockets usw., damit alle angezeigt werden.)Auf der Utility-Seite haben die Autoren des
ls
Befehls eine Reihe von Optionen und Kombinationen von Optionen bereitgestellt, mit denen wir bestimmte Informationen oder Arten von Informationen herausfiltern können, z. B. die oben kommentierten @ Gilles,ls -A
die alle anzeigen dotfile, mit Ausnahme von.
und..
. Alle diese Optionen können als Nachbearbeitungsoptionen betrachtet werden. Sie beeinflussen, was von angezeigt wirdls
, nicht was von gefunden wirdls
.Es gibt wirklich keinen Grund, explizit aufzulisten,
.
und..
standardmäßig, da wir alle wissen, dass sie da sind, wofür sie sind und wann sie verwendet werden sollen.Es kann auf jeden Fall hilfreich sein, eine Option zu haben, um sie anzuzeigen, wenn Sie Probleme mit seltsamen Berechtigungen beheben.
Überprüfen Sie die Manpage für
getdents()
¹. Es erklärt etwas mehr über die Funktionsweise und enthält den Quellcode für ein Beispielprogramm, mit dem Sie kompilieren könnengcc -Wall
und in dem alle Dateien in einem Verzeichnis aufgelistet sind.-
1. Zumindest
getdents()
scheint die Ubuntu-Manpage für den Beispielcode zu haben.quelle
ls
wird normalerweise nicht angezeigt.
und..
. Versteckt standardmäßigls
alle Dateien, deren Name mit einem.
(Punktdateien) beginnt .ls -a
zeigt sie an, weil Sie aufgefordert haben, alles anzuzeigen. Einige Versionen vonls
haben eine etwas andere Option,ls -A
um alle Punktdateien anzuzeigen, aber nicht.
oder..
.Das Anzeigen
.
kann nützlich sein, wenn Sie mehr als die Namen auflisten. Meldet beispielsweisels -la
die Berechtigungen und den Besitz des aktuellen Verzeichnisses und seines übergeordneten Verzeichnisses zusammen mit denen der Dateien im Verzeichnis.quelle