ich lese Windows - Was sind "." und ".." in einem Verzeichnis? - Superuser
Es erklärt:
Der einzelne Punkt
.
wird auch verwendet, wenn Sie das aktuelle Verzeichnis als Argument an einen Befehl übergeben möchten.
Ich bin sehr verwirrt. Kann jemand ein Beispiel geben?
linux
filesystems
JawSaw
quelle
quelle
Antworten:
Die Frage ist über Windows, aber Sie haben getaggt Linux Daher gilt meine Antwort für Linux.
Jedes Mal, wenn Sie einen Befehl aufrufen, gibt es einen Arbeitsverzeichnis Du bist gerade dabei;
.
bezeichnet dieses Verzeichnis.pwd
ist ein allgemeiner Befehl, um zu wissen, was dieses Verzeichnis ist. Während der Arbeit in einer Muschel wiebash
Sie können mit in ein anderes Verzeichnis wechselncd /another/directory/path
.Einige Befehle (wie
cd
oben) Verzeichnisse (d. h. deren Pfade) als Argumente akzeptieren. Jetzt möchte ich über offensichtliche Grundlagen sprechen. aber deine frage scheint einfach zu sein, also los geht's. Die allgemeine Syntax, an die ein Argument übergeben werden sollsome_command
ist wie:oder sogar eine beliebige Anzahl von Argumenten (vier in diesem Beispiel):
Sie können verwenden
.
als Argument anstelle des von zurückgegebenen Pfadespwd
. Ob Der Befehl interpretiert es als Pfad zum Verzeichnis, dann sollte es als das aktuelle Arbeitsverzeichnis verstanden werden. Obwohlcd .
hat wenig Sinn, weil es Ihre Shell dazu bringt, in dasselbe Verzeichnis zu "wechseln", in dem sie sich bereits befindet. Die Syntax ist vollkommen gültig. Nützliches Beispiel istEs wird der Speicherplatzbedarf des Dateisystems gemeldet, in dem sich Ihr aktuelles Arbeitsverzeichnis befindet.
Es gibt Befehle, die standardmäßig für das aktuelle Arbeitsverzeichnis ausgeführt werden:
ls
ist äquivalent zuls .
,du
ist äquivalent zudu .
. Beachten Sie, dass dies nicht immer der Fall ist:df
druckt dabei alle verfügbaren Dateisysteme ausdf .
druckt nur einen davon.Ich hab geschrieben " ob Der Befehl interpretiert ihn als Pfad zum Verzeichnis ", da einige Befehle dies nicht tun
bash
der Befehlwird gedruckt
foo,bar
(tr
ersetzt.
mit,
im gegebenenfoo.bar
Zeichenfolge). Das ist weiltr
interpretiert.
als Einzelzeichenfolge.Das zeigt
.
wird von der Shell nicht in den aktuellen Verzeichnispfad übersetzt. Vergleichen Sie dies mit~
was auf den Wert von übersetzt wird$HOME
(Versuchenecho ~
imbash
). Die Interpretation von.
da ein bestimmter Pfad weit in das Design des Verzeichnisbaums unter Linux hineinreicht (allgemeiner: unter UNIX).So kann jeder Befehl interpretieren
.
allein. Wenn es sich jedoch um einen Verzeichnispfad handelt, sollte es sich laut Konvention um das aktuelle Arbeitsverzeichnis handeln. Linux versteht dies und bietet Tools, um diese "Konvertierung" zu unterstützen.Beachten Sie auch
ls -a
fast immer druckt.
unter dem "echten" Verzeichnisinhalt. Interessant wird es, wenn Ihr aktuelles Arbeitsverzeichnis gelöscht wird. In diesem Fallls -a
druckt nichts, aberls .
oderdf .
noch arbeiten, als ob.
war dort.quelle
Ein leicht erfundenes Windows-Beispiel: Sie können verwenden
.
So legen Sie die Attribute des aktuellen Verzeichnisses fest:Hier setzen wir das schreibgeschützte Attribut für das
sub2
Verzeichnis während wir drin sind.attrib +r .
ist kürzer und einfacher zu tippen alsattrib +r ..\sub2
oderattrib +r C:\Path\to\Some\Directory \sub2
.quelle