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 12/2014: ANONYM & SICHER

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

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...