Executive Summary (TL; DR)
- Verwenden Sie, um
pwdzu wissen, wo Sie sich befinden (oder suchen Sie zwischen den: und dem $in Ihrer Eingabeaufforderung).
- Dient
cdzum Wechseln des Verzeichnisses an einer anderen Stelle. Im Gegensatz zu Windows cdmuss immer ein Leerzeichen folgen; Befehle wie cd/und cd..werden nicht funktionieren, aber cd /und cd ..werden.
Wissen, wo Sie sind
Weg 1: Laufen pwd.
In welchem Verzeichnis Sie sich gerade befinden, ist Shell-spezifisch (und allgemeiner anwendungsspezifisch). Sie könnten eine Shell ausführen, in der Sie sich in einem Verzeichnis befinden, und eine andere Shell, in der Sie sich in einem anderen Verzeichnis befinden.
Um herauszufinden, in welchem Verzeichnis Sie sich gerade befinden, führen Sie Folgendes aus:
pwd
Zum Beispiel (aus einer Shell, die ich gerade geöffnet habe, auf meinem Computer):
ek@Kip:~$ pwd
/home/ek
Dies sagt mir, dass ich im Verzeichnis bin /home/ek. /homeist (etwas verwirrend) das Verzeichnis, das die Home-Verzeichnisse der Benutzer enthält (es ist selbst kein Home-Verzeichnis eines Benutzers). Der Benutzer usernamehat ein Home-Verzeichnis/home/username .
Der rootBenutzer hat kein Basisverzeichnis in /home. Stattdessen rootlautet das Basisverzeichnis von /root. Dies ist nicht zu verwechseln mit dem Stammverzeichnis , das ist/ .
Möglichkeit 2: Untersuchen Sie Ihre Eingabeaufforderung.
In der Standardkonfiguration für Ihre Eingabeaufforderung wird angegeben, in welchem Verzeichnis Sie sich gerade befinden. Bei Ihrer Eingabeaufforderung handelt es sich um den Text, der Sie darüber informiert, dass die Shell zur Annahme eines Befehls bereit ist.
In dem Beispiel, das Sie uns in Ihrer Frage gezeigt haben, lautet Ihre Eingabeaufforderung:
christy@ubuntu:~$
christyist dein Benutzername. Das @Zeichen trennt es vom ubuntuHostnamen Ihres Computers. (Wenn Sie eine Live-CD ausführen, lautet der Hostnameubuntu Einige Benutzer wählen diesen Namen auch während der Installation als Computernamen.)
Das :Zeichen trennt es vom Namen des Verzeichnisses, in dem Sie sich gerade befinden. In diesem Fall wird dies durch dargestellt ~. ~ist eine Abkürzung für Ihr Home-Verzeichnis. Wenn Sie sich nicht in Ihrem Home-Verzeichnis befinden, sollte ein vollständiger Verzeichnisname angezeigt werden. Beispielsweise:
ek@Kip:~$ cd /var/log
ek@Kip:/var/log$
(Um abzuschließen, was jeder Teil der Eingabeaufforderung bedeutet: Bei Eingabeaufforderungen, die dieser Konvention entsprechen, wird entweder ein $oder ein #Zeichen angezeigt. $In diesem Fall handelt es sich um eine normale Benutzer-Shell. Ein #Zeichen würde bedeuten, dass es sich um eine rootShell handelt.)
Ändern, wo Sie sind
Warum Ihr "cd" -Befehl nicht funktioniert hat.
Verwenden Sie den cdBefehl , um das Verzeichnis zu ändern .
Du bist gerannt cd/. Dies funktioniert nicht, weil Sie den cdBefehl nicht ausgeführt haben. In Ubuntu und anderen Unix-ähnlichen Betriebssystemen (in Unix- ähnlichen Shells wie bashder von Ihnen verwendeten Shell) endet der Name eines Befehls nur an einem Leerzeichen oder am Ende der Zeile.
So anders als in der Eingabeaufforderung in Windows (wo cd\interpretiert wird , um die gleiche wie cd \und cd..wird als das gleiche wie interpretiert cd ..), in bash(der Shell Sie in Ubuntu verwenden), cd/ist kein gültiger Befehl. Sie müssen verwenden cd /.
cd/bedeutet "der Eintrag im aktuellen Verzeichnis, dessen Name cdund der auch ein Verzeichnis ist." Unabhängig davon , ob ein solches Unterverzeichnis vorhanden ist , kann es nicht als Befehl ausgeführt werden, so oder so erhalten Sie einen Fehler finden (obwohl welchen Fehler Sie bekommen abweichen):
ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory
Zu Ihrem Home-Verzeichnis wechseln
Um in Ihr Home-Verzeichnis zu gelangen, führen Sie das cdProgramm ohne Argumente aus:
cd
Einige Leute bevorzugen es, ihr Heimatverzeichnis explizit zu benennen. Sie können den vollständigen Namen oder verwenden
cd ~
Aber cdalleine ist ausreichend.
Ein Verzeichnis nach oben verschieben
Verwenden Sie zum Ändern des Verzeichnisses in das übergeordnete Verzeichnis des aktuellen Verzeichnisses (dh das Verzeichnis, in dem es enthalten ist) Folgendes:
cd ..
..Stellt das übergeordnete Verzeichnis des aktuellen Verzeichnisses dar. Wenn Sie sich im Stammverzeichnis ( /) befinden, gibt es eine Ausnahme: Stellt ..nur dar /. cd ..Wenn Sie also irgendwo anders als ausführen , rückt running um ein Verzeichnis nach oben /. Wenn /du hineingelaufen bist, bleibst du drin /.
Jedes Verzeichnis enthält einen ..Eintrag. Sie enthalten außerdem alle einen .Eintrag, der auf das aktuelle Verzeichnis selbst verweist. Es ist nicht sehr zu rennen cd .. Sie bleiben immer dort, wo Sie sind.
Absolute und relative Pfade
Wenn Sie cdzu etwas kommen, das nicht mit einem beginnt /, dann versucht es, zu diesem Verzeichnis innerhalb des aktuellen Verzeichnisses zu wechseln .
Zum Beispiel, wenn Sie gelaufen sind
cd var/log
Dann würde es versuchen, in das varUnterverzeichnis dessen zu gelangen, in dem Sie sich gerade befinden, und in das logUnterverzeichnis dessen. Wenn nicht beide vorhanden sind und an diesen Stellen, wird dieser cdBefehl fehlschlagen (und Sie werden dort bleiben, wo Sie ursprünglich waren).
Wenn Sie in logdas varUnterverzeichnis des Stammverzeichnisses wechseln möchten , führen Sie stattdessen Folgendes aus :
cd /var/log
Nur wenn Sie sich gerade in /befinden, cd var/logentspricht cd /var/log.
Ein Weg, der mit beginnt, /ist absolut. Wie es gelöst wird, hängt nicht davon ab, wo Sie sich gerade befinden.
Der Pfad ~ist auch absolut, weil er (im Wesentlichen) eine Abkürzung für ist $HOME. HOMEist eine Umgebungsvariable , und der Ausdruck wird $HOMEauf den vollständigen absoluten Pfad des Basisverzeichnisses des aktuellen Benutzers erweitert.
~Die Notation kann auch zur Darstellung des Home-Verzeichnisses eines anderen Benutzers verwendet werden. Wenn Sie schreiben , steht dies für das Basisverzeichnis von.~usernameusername
Zurück zu Ihrem vorherigen Standort
Das Verzeichnis, in dem Sie sich gerade befinden, wird in der PWDUmgebungsvariablen gespeichert . Das letzte Verzeichnis, in dem Sie sich befanden, wird in der OLDPWDUmgebungsvariablen gespeichert . Sie können OLDPWDalle Umgebungsvariablen auf dieselbe Weise anzeigen:
echo $OLDPWD
Da diese Informationen gespeichert werden, cdkönnen Sie auf besondere, schnelle und einfache Weise dorthin zurückkehren, wo Sie zuvor waren. Um zum letzten Verzeichnis zu gelangen, in dem Sie sich befanden, führen Sie wie folgt aus:
cd -
Wenn Sie sich noch nie in einem früheren Verzeichnis in dieser Shell befunden haben , wurde die OLDPWDUmgebungsvariable nicht festgelegt, und der Versuch, sie auszuführen, cd -führt zu einem Fehler (und Sie bleiben dort, wo Sie sind):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
Ändern, wo Sie wie ein Chef sind
pushdund popd: Der Verzeichnisstapel
Stellen Sie sich einen Stapel von Verzeichnisnamen vor. Mit einem Stapel meine ich etwas, bei dem, wenn Sie etwas hinzufügen, es oben liegt, und Sie können immer nur eine Sache auf einmal entfernen, und die Sache, die Sie entfernen, ist immer die, die aktuell oben liegt.
Sie können drücken ein beliebiges Verzeichnis dirauf den Stapel durch Ausführen von :
pushd dir
Wenn Sie das aktuelle Verzeichnis an den Anfang des Stapels verschieben möchten, können Sie Folgendes verwenden .(das, wie oben erläutert, immer das aktuelle Verzeichnis darstellt):
pushd .
Dann können Sie Ihrem Geschäft nachgehen und die Verzeichnisse nach Belieben wechseln. Wenn Sie zum letzten Verzeichnis zurückkehren möchten, mit dem Sie auf den Stack verschoben haben pushd, führen Sie Folgendes aus:
popd
Dies geht in dieses Verzeichnis und wirft es auch vom Stapel. Jetzt ist der Stack ein Verzeichnis kürzer. Wenn dies das einzige Verzeichnis auf dem Stapel war, ist der Stapel jetzt leer.
Sie können einen Stapel mit einer Größe größer als 1 haben. Das heißt, Sie können separate pushdBefehle verwenden, um mehrere Verzeichnisse auf den Stapel zu verschieben. Mit jedem nachfolgenden popdBefehl wird das zuletzt übertragene Verzeichnis, das noch nicht geöffnet wurde, aufgerufen (und aus dem Stapel entfernt ).
Hier ist ein Beispiel:
ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$
pushdund popdwerden viel seltener verwendet als cd. Sie haben auch andere, noch weiter fortgeschrittene Anwendungen. Führen Sie help pushdund help popdfür Details.
Weitere Informationen und Zugriff auf die Dokumentation
cdund pwdhaben auch fortgeschrittenere Verwendungen. Um etwas über sie zu lernen, renne help cdund man pwd.
helpist für Shell-Builtins . manist für eigenständige Befehle - Befehle, die als separate Prozesse ausgeführt werden und als separate ausführbare Dateien existieren. Der typeBefehl zeigt an, ob ein Befehl eine eingebaute Shell ist oder nicht, und wenn nicht, wo sich das von ihr ausgeführte Programm befindet. Zum Beispiel könnten Sie laufen type help, type typeoder type man.