Viele Linux-Leute haben noch nie von pushd und popd gehört, aber sie gibt es schon immer. Sie können auch das Navigieren in Verzeichnissen auf der Befehlszeile erheblich beschleunigen. Wir zeigen Ihnen, wie Sie sie verwenden.
Inhaltsverzeichnis
Was sind pushd und popd?
Eine der Neuerungen Bill Joy eingearbeitet in seine 1978 C-Schale war das Konzept eines Verzeichnisstapels und die Mittel, ihn zu manipulieren: pushd und popd. Da Nachahmung die aufrichtigste Form der Schmeichelei ist, wurden der Verzeichnisstack, pushd und popd bald in andere Shells (wie Bash) und sogar andere Betriebssysteme integriert.
Das Konzept des Stapels ist einfach. Gegenstände werden nacheinander auf den Stapel gelegt, wobei der zuletzt hinzugefügte Gegenstand immer die oberste Position einnimmt. Wenn Elemente aus dem Stapel entnommen werden, werden sie der Reihe nach von oben nach unten entfernt. Stapel dieser Art werden oft als Zuletzt rein, zuerst raus (LIFO)-Warteschlangen.
Tatsächlich sind pushd und popd etwas flexibler, aber dies ist ein gutes Modell, das man sich vorerst merken sollte.
Da wir uns auf einen Verzeichnisstapel beziehen, überrascht es wahrscheinlich nicht, dass das „d“ in pushd und popd für „directory“ steht. Mit diesen Befehlen können Sie Verzeichnisse auf den Verzeichnisstapel verschieben oder daraus entfernen.
Aber was nützt uns das?
Wie pushd den Stack auffüllt
Wenn Sie pushd verwenden, passieren die folgenden drei Dinge:
Sie ändern das Verzeichnis genauso wie bei der Verwendung von cd.
Der Name und der Pfad des Verzeichnisses werden dem Stack hinzugefügt.
Der Stack wird als durch Leerzeichen getrennte Liste von Verzeichnissen angezeigt.
Beachten Sie in den folgenden Beispielen, wie der Verzeichnisstapel mit jedem neuen pushd-Befehl wächst. Beachten Sie auch, dass sich die Spitze des Stapels links befindet – hier werden die neuen Einträge angezeigt.
Nach dem ersten pushd-Befehl gibt es zwei Einträge im Stack: das Verzeichnis, das Sie verlassen haben, und das Verzeichnis, in das Sie verschoben wurden.
Für unser Beispiel geben wir Folgendes ein:
pushd ~/Desktop
pushd ~/Music
pushd ~/Documents
pushd ~/Pictures
pushd ~
Der letzte pushd-Befehl brachte uns zurück in unser Home-Verzeichnis, also sind der erste und letzte Eintrag im Stack die Tilde (~), die unser Home-Verzeichnis repräsentiert. Dies zeigt, dass, obwohl ein Verzeichnis bereits im Stack ist, es für andere Push-Befehle wieder hinzugefügt wird.
Beachten Sie auch, dass der Eintrag ganz links im Stapel, der zuletzt hinzugefügt wurde, Ihr aktuelles Verzeichnis ist.
Das dirs-Kommando
Sie können den dirs-Befehl wie unten gezeigt verwenden, um den Verzeichnisstapel anzuzeigen:
dirs
Es wirkt sich nicht auf den Stack aus, es wird nur angezeigt. Einige der Optionen, die Sie mit pushd verwenden können, beziehen sich auf die Position der Verzeichnisse im Stack.
Wenn Sie die numerische Position jedes Verzeichnisses sehen möchten, können Sie die Option -v (vertikal) wie unten gezeigt verwenden:
dirs -v
Wenn Sie statt der Tilde (~) lieber den ausgeschriebenen Pfad zu Ihrem Home-Verzeichnis sehen möchten, fügen Sie die Option -l (langes Format) wie folgt hinzu:
dirs -v -l
Hinzufügen eines Verzeichnisses zum Stapel
Wie wir gesehen haben, macht der pushd-Befehl drei Dinge: ändert Ihr Verzeichnis, fügt das neue Verzeichnis dem Stack hinzu und zeigt den Stack für Sie an. Sie können die Option -n (keine Rotation) verwenden, um dem Stack ein Verzeichnis hinzuzufügen, ohne das aktuelle Verzeichnis zu ändern.
Hier ist unser Verzeichnis-Stack:
dirs -v -l
Jetzt verwenden wir den pushd-Befehl mit der Option -n und pas im Verzeichnis /home/dave als Parameter. Dann überprüfen wir den Verzeichnisstapel erneut.
Wir geben folgendes ein:
pushd -n /home/dave
dirs -v -l
Das Verzeichnis /home/dave wurde dem Stack in Slot 1 hinzugefügt, was der zweite Platz im Stack ist. Es kann nicht die oberste Position einnehmen, da Slot Null immer das aktuelle Verzeichnis ist.
Wir haben das aktuelle Verzeichnis ~/Videos nicht verlassen, also wurde es nicht an eine andere Position im Stapel gedreht.
Verzeichnis durch Drehen des Stapels ändern
Sie können numerische Parameter mit pushd verwenden, um in ein beliebiges Verzeichnis in einem Stack zu wechseln, und der Stack dreht sich dabei. Das zu verschiebende Verzeichnis wird dann zum ersten Eintrag im Stapel.
Sie verweisen auf die Verzeichnisse im Stack durch ihre Positionsnummer. Sie können von oben oder unten im Stapel zählen. Bei positiven Zahlen wie +3 zählen Sie von oben; für negative Zahlen, wie -2, zählen Sie von unten.
Das Verzeichnis /home/dave/Documents befindet sich an Position drei. Wir können den folgenden Befehl verwenden, um dieses Verzeichnis zu verschieben:
pushd +3
Die Verzeichnisse im Stapel oberhalb des von uns ausgewählten Verzeichnisses werden an das untere Ende des Stapels verschoben. Unser gewähltes Verzeichnis nimmt nun die oberste Position ein und wir werden in dieses Verzeichnis verschoben.
Wenn wir in das Verzeichnis am unteren Ende des Stapels wechseln möchten, können wir den folgenden Befehl verwenden:
pushd -0
Das letzte Verzeichnis wird in den ersten Slot verschoben und alle anderen werden im Stack nach unten verschoben. Wir wechseln in das Verzeichnis ~/Pictures.
Der popd-Befehl
Sie können den Befehl popd verwenden, um Verzeichnisse vom Stapel zu entfernen.
Wenn wir uns den Verzeichnisstapel ansehen, können wir sehen, dass das Verzeichnis an Position 1 /home/dave ist. Um dies vom Stack zu entfernen, geben wir Folgendes ein, um die Nummer an popd zu übergeben:
dirs -v -l
popd +1
Das Verzeichnis /home/dave wurde entfernt, und diejenigen, die sich im Stack darunter befanden, sind jeweils um eine Stelle nach oben gerückt.
Genauso wie wir es mit pushd können, können wir mit popd von unten im Stapel zählen. Um das letzte Verzeichnis vom Stack zu entfernen, geben wir Folgendes ein:
popd -0
Das Verzeichnis ~/Music wird an der letzten Position im Stack entfernt.
Um das Verzeichnis zu ändern, etwas tun und dann zum vorherigen Verzeichnis zurückkehren, können Sie pushd und popd zusammen verwenden.
Wir verwenden pushd, um in ein anderes Verzeichnis zu wechseln. Wir verwenden popd, um das oberste Verzeichnis im Stapel zu verwerfen und in das Verzeichnis an der zweiten Position zu wechseln. Dies ist das Verzeichnis, aus dem Sie gerade verschoben wurden, sodass Sie wieder in das Verzeichnis zurückfallen, in dem Sie sich ursprünglich befanden.
Wir geben folgendes ein:
pushd ~
popd
Wir haben im Verzeichnis ~/Projects angefangen, in das Home-Verzeichnis verschoben und dann wieder in das Verzeichnis ~/Projects zurückgekehrt.
Rotieren durch den gesamten Stapel
Wir werden veranschaulichen, wie man durch einen Stapel mit einigen verschachtelten Verzeichnissen rotiert, aber Sie können beliebige Verzeichnisse überall im Dateisystem verwenden.
Unsere tiefste Verschachtelungsebene ist:
/home/dave/Projects/htg/articles
Vom Home-Verzeichnis aus gehen wir schrittweise durch jedes Verzeichnis, bis wir das Artikelverzeichnis erreichen. Dann schauen wir uns den Verzeichnisstapel an.
Wir geben folgendes ein:
pushd ~/Projects
pushd htg
pushd articles
dirs -v -l
Wenn Sie wiederholt gedrückte +1-Befehle ausgeben, können Sie den Stapel der Verzeichnisse durchgehen. Wenn Sie dies häufig tun, wäre pushd +1 ein guter Kandidat für einen Alias.
Geben Sie Folgendes ein:
pushd +1
Über den Stapel stempeln
Es ist einfach, zu alten Gewohnheiten zurückzukehren und das Verzeichnis mit cd zu wechseln. Wenn Sie dies tun, überschreiben Sie das erste Verzeichnis im Stapel. Dies ist unvermeidlich, da der erste Slot für das aktuelle Arbeitsverzeichnis reserviert ist – keiner der anderen ändert die Position.
Geben Sie dazu Folgendes ein:
dirs -v -l
cd ~/Music
dirs -v -l
Nachdem Sie sich an die Befehle pushd und popd gewöhnt haben (und sie vielleicht verwenden, um ein paar Aliase zu erstellen), haben Sie eine superschnelle Möglichkeit, zwischen Verzeichnissen zu wechseln.
Aus diesem Grund hängen wir in der Befehlszeile herum. Effizienz rockt, oder?