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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

picture-012.jpg

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

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

2458 Hits
Wertung: 90 Punkte (11 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 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 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...