Wer häufig in der Shell arbeitet kennt das Problem: man muss häufig zwischen verschiedenen Verzeichnissen hin und her wechseln.Hierzu gibt es einige einfach Tricks, die einem das Leben an der ein oder anderen Stelle erleichtern können.

Um in das eigene Home-Verzeichnis zu kommen reicht immer ein einfaches

cd ~

Um in das Verzeichnis zu wechseln, in dem man sich vorher noch aufgehalten hat nutzt man

cd -

Das sieht dann so aus:

jan@mediastation1:~$ cd /etc
jan@mediastation1:/etc$ cd -
/home/jan
jan@mediastation1:~$ cd -
/etc
jan@mediastation1:/etc$ cd -
/home/jan
jan@mediastation1:~$

Möchte man nun mehrer Verzeichnisse vor und wieder zurückgehen, benötigt man „pushd“ and „popd“.
Diese beiden Befehle erlauben es Verzeichniswechsel zu stacken.
Beispiel:


jan@mediastation1:/media$ pushd /etc/apache2
/etc/apache2 /media
jan@mediastation1:/etc/apache2$ pushd /etc/mysql
/etc/mysql /etc/apache2 /media
jan@mediastation1:/etc/mysql$ pushd /home
/home /etc/mysql /etc/apache2 /media
jan@mediastation1:/home$ popd
/etc/mysql /etc/apache2 /media
jan@mediastation1:/etc/mysql$ popd
/etc/apache2 /media
jan@mediastation1:/etc/apache2$ popd
/media
jan@mediastation1:/media$ popd
-bash: popd: directory stack empty
jan@mediastation1:/media$

Wenn man also „pushd“ statt „cd“  verwendet, kann man via „popd“ wieder bis zum Ausgangsverzeichnis zurückwandern.

2 comments on “Linux: Schneller Verzeichniswechsel

Avatar image
andi on 13. August 2014 09:58

Hallo Jan,

eine Frage zu pushd / popd:
gibt es eine Möglichkeit, den mit pushd angelegten Stack zu behalten? Wenn man popd benutzt und die im Stack hinterlegten Pfade 1x durchlaufen hat, ist der Stack leer.

Folgendes Szenario: man möchte ständig zwischen 3 verschiedenen Pfaden wechseln, legt diese einmalig mit pushd im Stack ab und will sie nun mehrfach mit popd benutzen.

Danke für eine Rückinfo
Andi

Avatar image
Jan Weltmeyer on 13. August 2014 12:03

Hallo Andi

Nein, das geht so leider nicht.
Du könntest dir aber einfach die drei Verzeichnisse in ein array speichern und dann durchlaufen:
========

#!/bin/bash
dirs=(/ /bin /var)
for dir in ${dirs[*]}
do
    printf "Verzeichnis: %s\n" $dir
    ls $dir
done

========

Liebe Grüße,
Jan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert