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
| Befehl | Funktion |
|---|---|
pushd /pfad | Wechselt ins Verzeichnis und merkt das aktuelle |
pushd -n /pfad | Merkt Verzeichnis ohne zu wechseln |
pushd +N | Wechselt zum N-ten Eintrag (von oben) |
pushd | Tauscht die obersten zwei Einträge |
popd | Entfernt oberstes Verzeichnis, wechselt zum nächsten |
popd -n | Entfernt zweites Element ohne Wechsel |
popd +N | Entfernt N-ten Eintrag |
dirs -l -v | Zeigt 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.