Linux Kommandozeilen Navigationstipps: die Grundlagen der pushd und popd Befehle

Im ersten Teil dieser Serie konzentrierten wir uns auf den Aspekt der Kommandozeilen-Navigation unter Linux, indem wir die Verwendung des cd – Befehls diskutierten. Einige andere verwandte Punkte/Konzepte wurden ebenfalls diskutiert. Um die Diskussion weiterzuführen, werden wir in diesem Artikel erörtern, wie Sie mit den Befehlen pushd und popd eine schnellere Navigation auf der Linux-Kommandozeile erreichen können.

Die Grundlagen der Befehle pushd und popd

Um besser zu verstehen, was genau die Befehle pushd und popd bewirken, wollen wir zunächst das Konzept des Stapels diskutieren. Stellen Sie sich einen leeren Bereich auf Ihrer Küchenplatte vor, und stellen Sie sich nun einen Satz Teller vor, den Sie dort aufbewahren möchten. Was werden Sie tun? Ganz einfach, Sie halten sie übereinander.

Am Ende des gesamten Prozesses endet also die erste Platte, die Sie auf der Platte behalten haben, als letzte Platte im Stapel, und die letzte Platte, die Sie in der Hand hatten, endet als erste Platte im Stapel. Wenn Sie nun eine Platte benötigen, nehmen Sie diejenige, die oben auf dem Stapel liegt, verwenden Sie sie und nehmen dann die nächste Platte, wenn Sie sie benötigen.

Ähnlich ist das Konzept der pushd und popd Befehle. Es gibt einen Verzeichnisstapel auf Ihrem Linux-System, in dem Sie Verzeichnispfade für die zukünftige Verwendung stapeln können. Mit dem dirs-Befehl können Sie den Inhalt des Stapels zu jedem Zeitpunkt schnell einsehen.

Hier ist ein Beispiel, das die Ausgabe des dirs-Befehls auf meinem System unmittelbar nach dem Start des Kommandozeilen-Terminals zeigt:

$ dirs
~

Die Tilde (~) in der Ausgabe bedeutet, dass der Verzeichnisstapel derzeit nur das Heimatverzeichnis des Benutzers enthält.

Weiter geht es mit dem Speichern eines Verzeichnispfades und dem Entfernen des Pfades mit den Befehlen pushd und popd. Die Verwendung von pushd ist sehr einfach – übergeben Sie einfach den Pfad, den Sie im Verzeichnisstapel speichern wollen, als Argument an diesen Befehl. Hier ist ein Beispiel:

pushd /home/himanshu/Downloads/

Der obige Befehl ändert Ihr aktuelles Arbeitsverzeichnis in das Verzeichnis, das Sie als Argument übergeben haben, und fügt außerdem den Pfad zum Verzeichnisstapel hinzu. Um es für den Benutzer bequemer zu machen, erzeugt der Befehl pushd den Inhalt des Verzeichnisstapels in seiner Ausgabe. Als der obige Befehl ausgeführt wurde, wurde also die folgende Ausgabe erzeugt:

~/Downloads ~

Die Ausgabe zeigt, dass es jetzt zwei Verzeichnispfade im Stapel gibt: einer ist das Home-Verzeichnis des Benutzers und der andere das Download-Verzeichnis des Benutzers. Die Reihenfolge, in der sie aufbewahrt werden, ist: das Heimatverzeichnis befindet sich unten und das neu hinzugefügte Downloads-Verzeichnis liegt darüber.

Um zu überprüfen, ob das, was pushd in seiner Ausgabe sagt, wahr ist, können Sie auch den Befehl dirs verwenden:

$ dirs
~/Downloads ~

So können Sie sehen, dass der Befehl dirs ebenfalls die gleiche Ausgabe erzeugt hat.

Lassen Sie uns noch ein paar weitere pushd-Befehle ausgeben:

$ pushd /usr/lib/; pushd /home/himanshu/Desktop/
/usr/lib ~/Downloads ~
~/Desktop /usr/lib ~/Downloads ~

Der Verzeichnisstapel enthält nun also insgesamt vier Verzeichnispfade, wobei das Home-Verzeichnis (~) unten und das Desktop-Verzeichnis des Benutzers oben liegt.

Denken Sie immer daran, dass der Kopf des Stapels das Verzeichnis ist, in dem Sie sich gerade befinden, d.h. unser aktuelles Arbeitsverzeichnis ist jetzt ~/Desktop.

Nehmen wir an, Sie wollen zurück in das Verzeichnis /usr/lib gehen, so dass Sie nur noch den Befehl popd ausführen müssen:

$ popd
/usr/lib ~/Downloads ~

Der Befehl popd schaltet nicht nur Ihr aktuelles Verzeichnis nach /usr/lib um, sondern entfernt auch ~/Desktop vom Verzeichnisstapel – wie aus der Ausgabe des Befehls ersichtlich ist. Auf diese Weise können Sie mit dem popd-Befehl in der umgekehrten Reihenfolge durch diese Verzeichnisse navigieren.

Einige fortgeschrittene Punkte

Nachdem wir nun die Grundlagen der Push- und Popd-Befehle diskutiert haben, kommen wir zu einigen anderen Details, die mit diesen Befehlen zusammenhängen. Zunächst einmal können Sie mit diesen Befehlen auch den Verzeichnisstapel manipulieren. Nehmen wir zum Beispiel an, dass Ihr Verzeichnisstapel wie folgt aussieht:

$ dirs
~/Desktop /usr/lib ~ ~/Downloads

Nehmen wir an, die Anforderung ist, die Reihenfolge der Verzeichnispfade im Stack so zu ändern, dass das oberste Element (~/Desktop) ganz unten kommt und die restlichen alle um jeweils eine Stelle nach oben wandern. Dies kann mit dem folgenden Befehl erreicht werden:

pushd +1

Und das ist, was der obige Befehl mit dem Verzeichnisstapel macht:

$ dirs
/usr/lib ~ ~/Downloads ~/Desktop

Wir sehen also, dass die Reihenfolge der Elemente im Verzeichnisstapel geändert wurde und jetzt die gleiche ist, wie wir sie wollten. Natürlich können Sie die Elemente des Verzeichnisstapels beliebig oft verschieben. Der folgende Befehl verschiebt sie zum Beispiel zweimal nach oben:

$ pushd +2
~/Downloads ~/Desktop /usr/lib ~

Sie können auch negative Indexe verwenden:

$ pushd -1
/usr/lib ~ ~/Downloads ~/Desktop

In ähnlicher Weise können Sie diese Technik mit dem popd-Befehl verwenden, um jeden beliebigen Eintrag aus dem Verzeichnisstapel zu entfernen, ohne Ihr aktuelles Arbeitsverzeichnis zu verlassen. Wenn Sie zum Beispiel den dritten Eintrag von oben (der derzeit ~/Downloads ist) mit dem popd-Befehl entfernen wollen, können Sie den folgenden Befehl ausführen:

popd +2

Beachten Sie, dass der Stack-Index mit 0 beginnt, daher haben wir 2 benutzt, um auf den dritten Eintrag zuzugreifen.

Der Verzeichnisstapel enthält nun also:

$ dirs
/usr/lib ~ ~/Desktop

Bestätigt, dass der Eintrag entfernt wurde.

Wenn Sie aus irgendeinem Grund Schwierigkeiten haben, sich die Reihenfolge, in der die Elemente im Verzeichnisstapel positioniert sind, sowie die Indizes, die sie tragen, zu merken, können Sie die Befehlszeilenoption -v mit dem Befehl dirs verwenden. Hier ist ein Beispiel:

$ dirs -v
0 /usr/lib
1 ~
2 ~/Desktop

Wie Sie wahrscheinlich schon vermutet haben, sind die Zahlen auf der linken Seite Indizes, und was auf sie folgt, ist der Verzeichnispfad, der auf diesen Index positioniert ist.

Hinweis: Verwenden Sie die Befehlszeilenoption -c mit dem Befehl dirs, um den Verzeichnisstapel zu löschen.

Lassen Sie uns nun kurz die praktische Anwendung der Befehle popd und pushd besprechen. Auch wenn sie auf den ersten Blick etwas kompliziert erscheinen, sind diese Befehle beim Schreiben von Shell-Skripten sehr nützlich – Sie müssen sich nicht merken, woher Sie kommen; machen Sie einfach ein popd und Sie sind wieder in dem Verzeichnis, aus dem Sie gekommen sind.

Erfahrene Skriptschreiber verwenden diese Befehle normalerweise auf folgende Weise:

popd >/dev/null 2>&1

Der oben erwähnte Befehl stellt sicher, dass popd still bleibt (keine Ausgabe erzeugt). In ähnlicher Weise können Sie auch pushd zum Schweigen bringen.

Die Befehle pushd und popd werden auch von Linux-Server-Administratoren verwendet, die sich normalerweise ständig zwischen einer Handvoll gleicher Verzeichnisse bewegen. Einige andere wirklich informative Anwendungsfälle werden hier erklärt.

Schlussfolgerung

Einverstanden, das Konzept von pushd und popd ist nicht sehr einfach. Aber es bedarf nur ein wenig Übung – ja, Sie müssen sich die Hände schmutzig machen. Verbringen Sie etwas Zeit mit diesen Befehlen, und Sie werden anfangen, sie zu mögen, vor allem, wenn es einen Anwendungsfall gibt, in dem sie Ihnen das Leben leicht machen.

Das könnte Dich auch interessieren …