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: 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.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl: mv & mmv
    Mit mv ("move") steht Ihnen ein Standardkommando zur Verfügung, das schon seit Ewigkeiten auf Unix-Systemen dabei hilft, Dateien und Verzeichnisse zu verschieben oder umzubenennen. Leider wird es etwas komplizierter, wenn gleich mehrere Dinge in einem Rutsch durch die Gegend geschoben werden sollen. Mit längeren Konstruktionen und for-Schleifen lassen sich diese Aufgaben erledigen, aber warum kompliziert, wenn's auch einfach geht? Das Programm mmv ("multiple move") hilft dabei.
  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • Bequem eingerichtet
    Mit Umgebungsvariablen richten Sie sich die Kommandozeile individuell und gemütlich ein.
  • rsync
    Mit dem Programm rsync [1] lassen sich lokal oder remote Dateien und Verzeichnisse synchronisieren. Dazu wird das "rsync remote-update protocol" benutzt, d. h. es wird zunächst auf Unterschiede zwischen Quelle und Ziel geprüft, bevor die eigentliche Übertragung beginnt – auf diese Weise wird das Transfervolumen minimiert.
  • Zu Befehl: Kanäle, Pipes und Tee
    Mit wenigen Handgriffen leiten Sie auf der Kommandozeile Ein- und Ausgaben von Befehlen um und kombinieren Kommandos. Wir stellen die benötigten Bash-Operatoren vor und zeigen, wie Sie mit dem Programm tee noch einen Zwischenschritt einlegen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...