Im Anfang war der Prompt
Einführung in die Shell – Teil 1
Dateimanager eingebaut
Eine der Hauptaufgaben der Shell ist, Funktionen eines Dateimanagers zur Verfügung zu stellen. Wollen Sie Ihre Dateien suchen, öffnen, organisieren, umbenennen, kopieren oder über das Netzwerk auf einen anderen Computer übertragen, können Sie all diese Dinge direkt in der Shell erledigen – schließlich waren das schon Standardarbeiten, als es noch keine grafischen Oberflächen gab. Die Shell ist darum richtig gut darin, Sie diese Dinge erledigen zu lassen.
Jetzt erhält der Begriff "Arbeitsverzeichnis" auch endlich eine Bedeutung: Ähnlich wie ein grafischer Dateimanager immer den Inhalt eines ausgewählten Verzeichnisses anzeigt (und Sie dann nur Dateien in diesem Ordner unmittelbar über Mausklicks auswählen und damit arbeiten können), gibt es auch in der Shell immer ein aktuelles Arbeitsverzeichnis, und viele Kommandos, die Sie am Shell-Prompt eingeben, beziehen sich unmittelbar auf die Dateien in diesem Ordner, sofern Sie nichts Gegenteiliges in Ihrem Befehl verlangen.
Dass Sie mit pwd herausfinden können, wie der Name des aktuellen Arbeitsverzeichnisses lautet, haben Sie schon gesehen. cd ist – Sie ahnen es – eine weitere Abkürzung und steht für "change directory" (Arbeitsverzeichnis wechseln). Haben Sie etwa einen Unterordner Dokumente in Ihrem Home-Verzeichnis, gelangen Sie mit dem Kommando
esser@netbookhg:~$ cd Dokumente esser@netbookhg:~/Dokumente$
dort hinein. Jetzt ändert sich auch der Prompt und zeigt an, dass Sie im gewünschten Verzeichnis gelandet sind. Genauso nützlich wie der Verzeichniswechselbefehl ist ein Kommando, das den Inhalt des aktuellen Ordners auflistet: also alle enthaltenen Dateien und Unterverzeichnisse. Das Kommando trägt den Namen ls ("list").
esser@netbookhg:~/Dokumente$ ls EasyLinux FOS Linux-Magazin mini-os.txt test LinuxUser
Das ist jetzt nicht besonders informativ – Listing 1 zeigt die Ausgabe eines leicht veränderten Aufrufs des ls-Befehls: Hinter dem Kommandonamen folgt (nach einem Leerzeichen) eine Option (hier -l). Optionen können das Verhalten eines Befehls verändern. Im Beispiel sorgt die Option -l dafür, dass die Shell den Verzeichnisinhalt im Langformat ausgibt.
Lange Ausgabe bei
lsesser@netbookhg:~/Dokumente$ ls -l insgesamt 2676 drwxr-xr-x 5 esser esser 4096 2009-11-19 18:33 EasyLinux drwxr-xr-x 9 esser esser 4096 2009-11-27 05:28 FOS drwxr-xr-x 7 esser esser 4096 2009-08-17 12:01 Linux-Magazin -rw-r--r-- 1 esser esser 1765 2009-02-26 19:36 mini-os.txt drwxr-xr-x 2 esser esser 4096 2009-04-11 12:15 test drwxr-xr-x 3 esser esser 4096 2009-08-21 08:43 LinuxUser
Auf den ersten Blick erkennbar sind von rechts nach links die Datei- oder Verzeichnisnamen, eine Uhrzeit und ein Datum. Letztere geben den Zeitpunkt der letzten Änderung an. Für die übrigen Spalten nun einige Erklärungen:
In der ganz linken Spalte stehen die Zugriffsrechte, die verschiedene Benutzergruppen für diese Dateien und Verzeichnisse haben. Eine genaue Beschreibung führt hier zu weit, einige ältere EasyLinux-Artikel [1,3] erklären die Rechte detailliert. Die folgenden beiden Spalten geben an, wer der Besitzer der Datei ist und zu welcher Benutzergruppe die Datei gehört. Bei selbst erstellten Dateien werden Sie hier in der ersten Spalte immer Ihren eigenen Benutzernamen sehen, in der zweiten Spalte steht – abhängig von der eingesetzten Linux-Distribution – erneut Ihr Benutzername (der gleichzeitig ein Gruppenname ist) oder der Gruppenname users. Danach folgt noch eine Spalte, die (bei Dateien) die Größe angibt.
Schieben, kopieren und löschen
Häufige Aktionen in der Shell bewegen Dateien durch die Gegend. Um etwa eine Datei aus dem aktuellen Arbeitsverzeichnis in den temporären Ordner /tmp/ zu verschieben, verwenden Sie das Kommando mv ("move"): Heißt die Datei test.txt, lautet der volle Befehl
mv test.txt /tmp/
Wichtig ist hier die Reihenfolge: Zunächst nennen Sie hinter dem Befehl mv den Namen der Datei, die Sie verschieben möchten, das zweite Argument ist dann der Zielordner /tmp/. Das Ganze geht auch in umgekehrter Richtung – um die Datei anschließend aus /tmp/ ins aktuelle Verzeichnis zurückzuholen, schreiben Sie
mv /tmp/test.txt .
Beachten Sie dabei, dass das zweite Argument nur ein einfacher Punkt ist: Über . sprechen Sie stets das aktuelle Verzeichnis an. Es gibt noch ein ähnliches Kürzel: .. (zwei Punkte) steht für das übergeordnete Verzeichnis – also für den Ordner, der eine Ebene höher (oder näher an der Wurzel) in der Verzeichnishierarchie liegt.
Fast genauso wie das Verschieben funktioniert das Kopieren. Ersetzen Sie dazu einfach den mv-Befehl durch cp ("copy"), die folgenden Argumente haben fürs Kopieren dieselbe Bedeutung wie fürs Verschieben. So erstellen Sie mit
cp test.txt /tmp/
eine (gleichnamige) Kopie von test.txt, die im Ordner /tmp/ liegt. Wollen Sie die Kopie unter einem anderen Namen erzeugen, schreiben Sie diesen direkt hinter den Verzeichnisnamen, z. B.
cp test.txt /tmp/kopie.txt
Die Kopie darf auch im selben Verzeichnis wie das Original liegen, muss dann aber zwingend einen anderen Namen erhalten. Das richtige Kommando wäre dann etwa
cp test.txt kopie.txt
Schließlich können Sie mv auch zum Umbenennen verwenden. Dabei geben Sie den bisherigen Namen als erstes Argument und den neuen Namen als zweites Argument an, z. B.
mv test.txt neuername.txt
Ein weiteres wichtiges Kommando ist rm ("remove"): Es entfernt oder löscht Dateien. Wollen Sie die eben erstellte Kopie kopie.txt wieder los werden, erledigt das ohne Rückfrage der Befehl
rm kopie.txt
Wichtig: Wenn Sie es von grafischen Dateimanagern gewohnt sind, dass gelöschte Dateien in einem speziellen Ordner namens Mülleimer landen, müssen Sie in der Shell umdenken. Eine gelöschte Datei ist weg, und es braucht schon einiges Expertenwissen und oft auch eine Portion Glück, um gelöschte Daten zurückzubringen. Setzen Sie das rm-Kommando also nur mit großer Vorsicht ein.



