Die Befehle pushd und popd verwalten einen Verzeichnisstapel, mit dem du schnell zwischen mehreren Arbeitsverzeichnissen wechselst. Statt lange Pfade wiederholt einzutippen, legst du Verzeichnisse auf einen Stapel und springst bei Bedarf zurück.

Der Verzeichnisstapel

Der Verzeichnisstapel ist eine Liste von Verzeichnissen, zwischen denen du hin- und herspringen kannst. Mit pushd fügst du Verzeichnisse hinzu, mit popd entfernst du sie wieder. Das aktuelle Arbeitsverzeichnis steht immer ganz oben.

Den Stapelinhalt zeigst du mit dirs an:

dirs

Für eine nummerierte Liste mit vollständigen Pfaden:

dirs -l -v

Die Befehle pushd, popd und dirs sind Shell-Builtins. Das Verhalten kann je nach Shell leicht variieren. Dieser Artikel behandelt die Bash-Varianten.

pushd – Verzeichnis wechseln und merken

Die Syntax:

pushd [OPTIONEN] [VERZEICHNIS]

Verzeichnis auf den Stapel legen

pushd /var/www

Der Befehl speichert dein aktuelles Verzeichnis auf dem Stapel und wechselt nach /var/www. Die Ausgabe zeigt den neuen Stapelinhalt:

/var/www ~

Das Tilde-Symbol ~ steht für dein Home-Verzeichnis.

Füge weitere Verzeichnisse hinzu:

pushd /opt
/opt /var/www ~

Verzeichnis merken ohne zu wechseln

Mit der Option -n fügst du ein Verzeichnis zum Stapel hinzu, ohne dorthin zu wechseln:

pushd -n /usr/local

Das Verzeichnis wird als zweites Element eingefügt:

/opt /usr/local /var/www ~

Zu einem bestimmten Stapeleintrag springen

Mit +N und -N wechselst du zu einem bestimmten Eintrag im Stapel.

Zeige zuerst die nummerierten Einträge:

dirs -l -v
 0  /opt
 1  /usr/local
 2  /var/www
 3  /home/user

Mit +N zählst du von oben (links), mit -N von unten (rechts):

pushd +2

Wechselt zu /var/www und verschiebt es an die Spitze des Stapels.

Alternativ von unten gezählt:

pushd -1

Zwischen den obersten zwei Verzeichnissen wechseln

Ohne Argument tauscht pushd die beiden obersten Einträge:

pushd

Das entspricht dem Verhalten von cd -, nur dass der Stapel erhalten bleibt.

popd – Verzeichnis vom Stapel entfernen

Die Syntax:

popd [OPTIONEN]

Oberstes Verzeichnis entfernen

Ohne Argument entfernt popd das oberste Verzeichnis und wechselt zum nächsten:

popd

Bei diesem Stapel:

/opt /usr/local /var/www ~

Nach popd:

/usr/local /var/www ~

Du befindest dich jetzt in /usr/local.

Entfernen ohne Verzeichniswechsel

Mit -n entfernst du das zweite Element, ohne das Verzeichnis zu wechseln:

popd -n

Bestimmten Eintrag entfernen

Mit +N und -N entfernst du einen bestimmten Eintrag:

popd +1

Entfernt den Eintrag an Position 1 (das zweite Element von oben).

Praktischer Nutzen

Der Verzeichnisstapel lohnt sich, wenn du regelmäßig zwischen denselben Verzeichnissen wechselst. Ein typisches Szenario: Du arbeitest an einem Projekt und musst wiederholt zwischen Quellcode, Konfiguration und Logs wechseln.

pushd /var/log/nginx
pushd /etc/nginx
pushd ~/projekt/src

Jetzt springst du mit pushd +1 oder pushd +2 direkt zu den anderen Verzeichnissen, ohne Pfade eintippen zu müssen.

Zusammenfassung

BefehlFunktion
pushd /pfadWechselt ins Verzeichnis und merkt das aktuelle
pushd -n /pfadMerkt Verzeichnis ohne zu wechseln
pushd +NWechselt zum N-ten Eintrag (von oben)
pushdTauscht die obersten zwei Einträge
popdEntfernt oberstes Verzeichnis, wechselt zum nächsten
popd -nEntfernt zweites Element ohne Wechsel
popd +NEntfernt N-ten Eintrag
dirs -l -vZeigt nummerierten Stapelinhalt

Für gelegentliche Verzeichniswechsel reicht cd -. Sobald du aber drei oder mehr Verzeichnisse im Blick behalten musst, machen pushd und popd die Navigation deutlich schneller.