Home / LinuxUser / 2003 / 08 / Zu Befehl: pwd, cd, pushd, popd und dirs

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Auf dem rechten Pfad

Zu Befehl: pwd, cd, pushd, popd und dirs

01.08.2003 Die Wege im Verzeichnisdschungel sind unergründlich. Wie Sie auf dem rechten Pfad bleiben und welche Kommandos bei der Navigation helfen, zeigt diese "Zu Befehl"-Folge.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Bäume spielen unter Linux eine große Rolle: Verwandtschaftsverhältnisse von Prozessen, die Beziehungen von Fenstern in der grafischen Oberfläche zueinander und nicht zuletzt das Linux-Dateisystem – immer hat es der User mit hierarchischen Strukturen zu tun, auf die das Bild eines Baums mit seinen Verästelungen angefangen vom Stamm bis hin zu den Blattspitzen passt.

Ausgehend vom Wurzelverzeichnis / leiten sich weitere Verzeichnisse (die ihrerseits Unterordner oder Dateien enthalten dürfen) ab. Datei-Manager wie der Konqueror (Abbildung 1) illustrieren diese Verhältnisse in ihrer Baumansicht.

Eine solche Baumstruktur lässt sich prinzipiell beliebig aufbauen. Doch damit User wie Programme schnell die von ihnen benötigten Dateien finden, helfen Regeln, die festlegen, welche Ordner welche Dateien enthalten. Der unter http://www.pathname.com/fhs/ beschriebene "Filesystem Hierarchy Standard" FHS fasst diese zusammen (Tabelle 1). Demnach fahndet man nach von einer Software gebrauchten Bibliotheken erst einmal unterhalb des /lib- oder /usr/lib-Verzeichnisses; reagiert ein installiertes Programm nicht auf seinen Namen, liegt es womöglich nicht im /bin-, sondern im /sbin-Verzeichnis, das im Suchpfad normaler User oft fehlt.

Eine Besonderheit stellt der Ordner /usr/local dar. Er ist Software vorbehalten, die der Benutzer am Paket-Manager der Distribution vorbei installiert. Ein Distributionsupgrade sollte hier nichts anfassen. Das Verzeichnis selbst hat eine ähnliche Struktur wie der gesamte Dateibaum selbst – mit Unterverzeichnissen wie lib und bin.

Abbildung 1: Saubere Hierarchie – der Linux-Dateibaum im Konqueror

Tabelle 1: Was liegt wo im Verzeichnisbaum?

/ Das Wurzelverzeichnis (englisch: "root directory")
/home Private Verzeichnisse der Benutzer
/root Heimatverzeichnis des Superusers
/usr Viele Anwendungsprogramme, das X-Window-System, Dokumentation und andere wichtige Daten. Enthält eine eigene Unterhierarchie mit /usr/bin, /usr/sbin etc.
/bin und /sbin Ausführbare Programme (englisch: "binaries"), wobei die unter /sbin meist nur den Administrator interessieren
/etc Konfigurationsdateien
/boot Dateien und Programme für den Systemstart, u. a. der Kernel
/dev Gerätedateien (englisch: "device") für die Hardware-Komponenten
/lib Bibliotheken (englisch: "libraries")
/opt Optionale Programme, meist größere Softwarepakete, die alle ihre Daten nicht im sonstigen System verteilen, sondern unter dem Dach eines gemeinsamen Verzeichnisses ablegen

Viele Wege führen zum Ziel

Dateien und Verzeichnisse lassen sich in dieser Baumstruktur über einen Pfad finden – absolut oder relativ. Als absoluten Pfad bezeichnet man den Weg zur gewünschten Datei, der ausgehend von / alle "zu betretenden" Verzeichnisse nennt, z. B. /home/huhn/linux-user/titel.png. Absolute Pfadnamen beginnen immer im Wurzelverzeichnis.

Wer relative Pfade angibt, beginnt seinen Weg dagegen immer im aktuellen Verzeichnis (auch als Punkt . abgekürzt). Wo im Dateibaum man sich befindet, verrät der Befehl pwd ("print working directory"):

huhn@asteroid:~$ pwd
/home/huhn

Die Datei /home/huhn/linux-user/titel.png lässt sich relativ zum aktuellen Arbeitsverzeichnis ansprechen:

huhn@asteroid:~$ ls linux-user/titel.png
linux-user/titel.png

Befindet man sich hingegen im Verzeichnis linux-user und meint eine Datei im Home-Verzeichnis, muss man sich zur Angabe des relativen Pfads zunächst einen Schritt nach "oben" begeben. Das übergeordnete Verzeichnis symbolisieren dabei zwei Punkte ..:

huhn@asteroid:~/linux-user$ ls ../datei
../datei

Geschickt navigiert

Mit dem Befehl cd (englisch: "change directory") wechselt man in ein Verzeichnis hinein; cd ohne Verzeichnisnamen als Argument aufgerufen bringt den User ins eigene Home-Directory zurück. Auch hier kommen wieder relative und absolute Pfade ins Spiel. Nach /etc wechselt es sich wesentlich schneller, wenn man über den absoluten Pfad geht (cd /etc) statt sich mit cd ../../etc vom eigenen Home nach "oben" durchzuhangeln.

Die Linux-Standard-Shell Bash bringt einige praktische Funktionen mit, welche die Navigation auf der Kommandozeile erleichtern. Beispielsweise speichert sie die Information, in welchem Verzeichnis Benutzer zuletzt waren, in der Variablen OLDPWD. Mit cd OLDPWD springen sie dahin zurück; ein weiteres cd $OLDPWD bringt sie wieder zurück zur Ausgangsbasis. Das $OLDPWD lässt sich im Zusammenhang mit dem Kommando cd durch ein Minuszeichen ersetzen, was viel lästige Tipparbeit erspart (Listing 1).

Listing 1

Schnelles Hin- und Herwechseln zwischen zwei Verzeichnissen

huhn@asteroid:~$ cd linux-user/
huhn@asteroid:~/linux-user$ cd /etc/
huhn@asteroid:/etc$ cd -
/home/huhn/linux-user
huhn@asteroid:~/linux-user$ cd -
/etc

Dabei "merkt" sich die Shell immer nur den letzten Aufenthalt; man springt also vor und zurück in den Verzeichnissen. Mehrere Directories lassen sich in einen sogenannten "Directory Stack" ("Verzeichnisstapel") packen. Die Bash bringt dafür die eingebauten Befehle ("Builtins") pushd und popd mit. Ersetzt der User bei einem Verzeichniswechsel das cd- durch das pushd-Kommando, legt die Shell die Aufenthaltsorte in genau dieser Reihenfolge auf den Stapel. Da sich vermutlich niemand den Inhalt des Stacks merken will, gibt die Bash ihn jeweils im Anschluss an das Kommando aus:

huhn@asteroid:~$ pushd linux-user/
~/linux-user ~
huhn@asteroid:~/linux-user$ pushd zubefehl/
~/linux-user/zubefehl ~/linux-user ~

Nach dem zweiten pushd-Befehl ist der Stapel auf insgesamt drei Verzeichnisse angewachsen. Ganz rechts steht das eigene Home (abgekürzt durch die Tilde ~), in der Mitte mit absoluter Pfadangabe ~/linux-user und ganz links der augenblicklich besuchte Ort ~/linux-user/zubefehl.

Zurück geht es (von links nach rechts) mit popd: Das Kommando entfernt den letzten Eintrag aus dem Stapel und führt ein cd ins nächste Verzeichnis der Liste aus. Für das vorhergehende Beispiel heißt das: Einmal aufgerufen bringt es die Benutzerin nach ~/linux-user zurück, beim zweiten Mal landet sie wieder im Home-Verzeichnis:

huhn@asteroid:~/linux-user/zubefehl$ popd
~/linux-user ~
huhn@asteroid:~/linux-user$ popd
~

Verliert man in einem solchen Stapel einmal die Übersicht, hilft ein weiteres Bash-Builtin namens dirs weiter:

huhn@asteroid:~/linux-user/zubefehl$ dirs
~/linux-user/zubefehl ~/linux-user ~

Übersichtlicher, mit einem Eintrag pro Zeile zeigt dirs -p aus der Bash-Version 2 die Verzeichnisse auf dem Stapel an; mit dem Parameter -c aufgerufen, löscht Bash 2 den Stack. Die gespeicherten Verzeichnisse lassen sich mit pushd +zahl rotieren: pushd +1 bringt beispielsweise das zweite Verzeichnis der Liste von links an den Anfang; die Zählung beginnt mit 0.

Glossar

$

Stellt man dem Namen einer Variablen in der Shell ein Dollarzeichen voran, gibt sie den Inhalt derselben zurück.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1099 Hits
Wertung: 0 Punkte (3 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...