Kapitel 3. Arbeiten mit der Shell

Inhaltsverzeichnis

3.1. Einführung in die Bash-Shell
3.2. Benutzer und Zugriffsberechtigungen
3.3. Wichtige Linux-Befehle
3.4. Der vi-Editor

Zusammenfassung

Beim Starten des Linux-Systems wird in der Regel eine grafische Benutzeroberfläche geöffnet, die Sie durch die Anmeldung und die darauf folgenden Interaktionen mit dem System führt. Obwohl grafische Benutzeroberflächen zunehmend wichtiger und benutzerfreundlicher geworden sind, sind sie nicht die einzige Möglichkeit, mit Ihrem System zu kommunizieren. Sie können auch eine text-orientierte Kommunikationsmethode wählen, wie einen Kommandozeilen-Interpreter (auch Shell genannt), in den Sie Ihre Befehle eingeben. Da Ihnen Linux die Möglichkeit bietet, Shell-Fenster direkt aus der grafischen Benutzeroberfläche zu starten, können Sie beide Methoden bequem nebeneinander verwenden.

Gerade in der Administration spielen Shell-basierte Anwendungen eine besonders große Rolle, wenn Sie zum Beispiel Computer über langsame Netzwerkverbindungen steuern müssen oder Aufgaben als root von der Kommandozeile ausführen möchten. Wenn Sie bislang noch nicht mit Linux gearbeitet haben, mag Ihnen die Eingabe von Befehlen in eine Shell vielleicht ungewöhnlich vorkommen. Sie werden aber bald feststellen, dass die Shell nicht nur für Administratoren geeignet ist, sondern häufig auch der schnellste und einfachste Weg ist, Ihre täglichen Aufgaben auszuführen.

Für UNIX bzw. Linux gibt es mehrere Shells. Die Standard-Shell in SUSE Linux ist die Bash (GNU Bourne-Again Shell).

Dieses Kapitel befasst sich mit einigen Grundlagen, die Sie für die Arbeit mit der Shell kennen sollten. Hierzu zählen unter anderem die folgenden Themen: das Eingeben von Befehlen, die Verzeichnisstruktur von Linux, die Verwendung von Dateien und Verzeichnissen, einige der grundlegenden Funktionen der Shell, das Benutzer- und Berechtigungskonzept von Linux, eine Übersicht über die wichtigsten Shell-Befehle sowie eine kurze Einführung in den Editor vi, einem Standardeditor, der auf UNIX- und Linux-Systemen immer zur Verfügung steht.

3.1. Einführung in die Bash-Shell

Unter Linux können Sie die Kommandozeile parallel zur grafischen Benutzeroberfläche verwenden und einfach zwischen den beiden wechseln. Um ein Terminalfenster über die grafische Benutzeroberfläche in KDE zu starten, klicken Sie in der Kontrollleiste auf das Symbol für Konsole. Klicken Sie in GNOME auf das Symbol GNOME-Terminal in der Kontrollleiste.

Das Konsole-Fenster bzw. das GNOME-Terminalfenster wird geöffnet. Dabei erscheint die Eingabeaufforderung (Prompt) in der ersten Zeile, wie in Abbildung 3.1, „Beispiel eines Bash-Terminalfensters“ zu sehen. Die Eingabeaufforderung zeigt normalerweise folgende Informationen an: Ihren Anmeldenamen (in diesem Fall tux), den Hostnamen Ihres Computers (hier knox) und den aktuellen Pfad (in diesem Fall Ihr Home-Verzeichnis, gekennzeichnet durch die Tilde, ~). Wenn Sie an einem entfernten Computer angemeldet sind, zeigen diese Informationen immer an, auf welchem System Sie gerade arbeiten. Wenn sich der Cursor hinter diesen Angaben befindet, können Sie direkt Befehle eingeben und an das Computersystem senden.

Abbildung 3.1. Beispiel eines Bash-Terminalfensters

Beispiel eines Bash-Terminalfensters

3.1.1. Eingeben von Befehlen

Ein Befehl besteht aus mehreren Elementen. Das erste Element ist stets der tatsächliche Befehl, gefolgt von Parametern oder Optionen. Sie können einen Befehl eintippen und ihn nachfolgend mithilfe von , , <—, Entf und Leertaste abändern. Sie können auch Optionen hinzufügen oder Tippfehler korrigieren. Befehle werden erst ausgeführt, wenn Sie Eingabe drücken.

[Important]No News is Good News

Die Shell gibt nicht viele Meldungen aus: Im Gegensatz zu einigen grafischen Benutzeroberflächen erhalten Sie normalerweise keine Bestätigungsmeldungen, wenn Befehle ausgeführt wurden. Meldungen erscheinen nur bei Problemen oder Fehlern.

Beachten Sie dies auch bei Befehlen zum Löschen von Objekten. Bevor Sie einen Befehl zum Entfernen einer Datei eingeben, wie beispielsweise rm, sollten Sie sich sicher sein, dass Sie das betreffende Objekt wirklich löschen möchten: Es wird ohne Nachfrage unwiederbringlich gelöscht.

3.1.1.1. Verwenden von Befehlen ohne Optionen

Betrachten wir die Struktur von Befehlen anhand eines einfachen Beispiels: anhand des Befehls ls, , der verwendet wird, um den Inhalt eines Verzeichnisses aufzulisten. Der Befehl kann mit oder ohne Optionen verwendet werden. Durch Eingeben des Befehls ls ohne Zusatz wird der Inhalt des aktuellen Verzeichnisses angezeigt:

Abbildung 3.2. Der Befehl ls

Der Befehl ls

Anders als bei MS Windows können Dateien in Linux eine Dateinamenserweiterung besitzen, wie beispielsweise .txt, müssen jedoch nicht. Daher ist es in dieser Ausgabe von ls schwierig, Dateien von Ordnern zu unterscheiden. Standardmäßig können Sie sich an den Farben orientieren: Verzeichnisse werden normalerweise in blauer, Dateien in schwarzer Farbe angezeigt.

3.1.1.2. Verwenden von Befehlen mit Optionen

Eine bessere Methode, weitere Details zum Inhalt eines Verzeichnisses zu erhalten, besteht darin, den Befehl ls mit einer Reihe von Optionen zu aufzurufen. Durch Optionen wird die Funktionsweise eines Befehls verändert, so dass Sie damit spezielle Aufgaben ausführen können. Optionen werden durch ein Leerzeichen vom Befehl getrennt und ihnen geht ein Bindestrich voran. Der Befehl ls -l z. B. zeigt den Inhalt desselben Verzeichnisses mit allen Details an (long listing format).

Abbildung 3.3. Der Befehl ls -l

Der Befehl ls -l

Links neben den einzelnen Objektnamen werden in mehreren Spalten Informationen zum Objekt angezeigt. Die wichtigsten Informationen sind folgende: die erste Spalte zeigt den Dateityp des Objekts (im vorliegenden Beispiel: d für Verzeichnisse ("directory") oder - für Dateien). Die nächsten neun Spalten zeigen die die Zugriffsberechtigungen für das Objekt. Die Spalten 11 und 12 zeigen den Namen des Dateieigentümers und der Gruppe (in diesem Fall: tux und users). Informationen zu Zugriffsberechtigungen und dem Benutzerkonzept von Linux finden Sie in Abschnitt 3.2, „Benutzer und Zugriffsberechtigungen“. In der nächsten Spalte wird die Dateigröße in Byte angezeigt, danach Datum und Uhrzeit der letzten Änderung. Die letzte Spalte zeigt den Namen des Objekts an.

Wenn Sie noch mehr sehen möchten, können Sie auch zwei Optionen für den Befehl ls kombinieren und ls -la eingeben. Die Shell zeigt nun auch verborgene Dateien im Verzeichnis an. Diese werden durch einen vorangestellten Punkt gekennzeichnet (beispielsweise .hiddenfile).

3.1.1.3. Aufrufen der Hilfe

Sie müssen sich nicht alle Optionen für alle Befehle merken. Wenn Sie den Namen eines Befehls wissen, sich jedoch hinsichtlich der Optionen nicht sicher sind, können Sie den Befehl mit nachfolgendem Leerzeichen und --help eingeben. Die Option --help ist für viele Befehle verfügbar. Wenn Sie beispielsweise ls --help eingeben, werden alle Optionen für den Befehl ls angezeigt.

3.1.2. Linux-Verzeichnisstruktur

Da die Shell keinen grafischen Überblick über die Verzeichnisse und Dateien bietet, wie beispielsweise eine Baumansicht in einem Dateimanager, ist es hilfreich, wenn Sie einige Grundkenntnisse zur Standardverzeichnisstruktur in Linux-Systemen besitzen. Sie können sich Verzeichnisse als elektronische Ordner vorstellen, in denen Dateien, Programme und Unterverzeichnisse gespeichert sind. Die oberste Ebene in der Hierarchie bildet das Stammverzeichnis, auch / genannt. Von hier aus können Sie auf alle anderen Verzeichnisse zugreifen.

Abbildung 3.4, „Auszug aus einer Standardverzeichnisstruktur“ zeigt den Standard-Verzeichnisbaum in Linux mit den Home-Verzeichnissen der Beispielbenutzer xyz, linux und tux. Das Verzeichnis /home enthält die Verzeichnisse, in denen die einzelnen Benutzer ihre persönlichen Dateien speichern können.

[Note]Home-Verzeichnis in einer Netzwerkumgebung

Wenn Sie in einer Netzwerkumgebung arbeiten, trägt Ihr Home-Verzeichnis möglicherweise nicht den Namen /home. Es kann jedem beliebigen Verzeichnis im Dateisystem zugeordnet sein.

Die folgende Liste enthält eine kurze Beschreibung der Standardverzeichnisse in Linux.

Abbildung 3.4. Auszug aus einer Standardverzeichnisstruktur

Auszug aus einer Standardverzeichnisstruktur
/

Stammverzeichnis, Startpunkt der Verzeichnisstruktur

/home

Persönliche Verzeichnisse von Benutzern

/dev

Gerätedateien, die Hardware-Komponenten darstellen

/etc

Wichtige Dateien für die Systemkonfiguration

/etc/init.d

Startskripts

/usr/bin

Programme, die für den allgemeinen Zugriff verfügbar sind

/bin

Programme, die am Anfang des Startvorgangs benötigt werden

/usr/sbin

Programme, die für den Systemadministrator reserviert sind

/sbin

Programme, die für den Systemadministrator reserviert und für den Start erforderlich sind

/usr/include

Header-Dateien für den C-Compiler

/usr/include/g++

Header-Dateien für den C++-Compiler

/usr/share/doc

Verschiedene Dokumentationsdateien

/usr/share/man

Systemhandbuchseiten (Manualpages)

/usr/src

Quellcode der Systemsoftware

/usr/src/linux

Kernel-Quellcode

/tmp, /var/tmp

Temporäre Dateien

/usr

Alle Anwendungsprogramme

/var

Konfigurationsdateien (wie solche, die über /usr verknüpft sind)

/var/log

Systemprotokolldateien

/var/adm

Systemverwaltungsdaten

/lib

Freigegebene Bibliotheken (für dynamisch verknüpfte Programme)

/proc

Prozessdateisystem

/sys

Systemdateisystem, in dem alle Gerätedaten für das Kernel gesammelt werden.

/usr/local

Lokale, verteilungsunabhängige Erweiterungen

/opt

Optionale Software, größere Add-On-Programmpakete (wie KDE, GNOME und Netscape)

3.1.3. Arbeiten mit Verzeichnissen und Dateien

Um eine bestimmte Datei bzw. ein bestimmtes Verzeichnis anzusprechen, müssen Sie den Pfad angeben, der zu dem betreffenden Verzeichnis bzw. der betreffenden Datei führt. Es gibt zwei Möglichkeiten einen Pfad anzugeben:

  • Den vollständigen Pfad vom Stammverzeichnis zur jeweiligen Datei (absoluter Pfad)

  • Den Pfad, der vom aktuellen Verzeichnis ausgeht (relativer Pfad)

Absolute Pfade beginnen immer mit einem Schrägstrich. Relativen Pfaden ist kein Schrägstrich vorangestellt.

[Note]Bei Linux muss Groß- und Kleinschreibung berücksichtigt werden

Linux unterscheidet im Dateisystem zwischen Groß- und Kleinbuchstaben. So ist es für Linux ein Unterschied, ob Sie test.txt oder Test.txt eingeben. Beachten Sie dies beim Eingeben von Dateinamen und Pfaden.

Mit dem Befehl cd können Sie das Verzeichnis wechseln. Geben Sie dabei Ihr Zielverzeichnis als Option des Befehls an. Als Platzhalter für das aktuelle Verzeichnis können Sie einen Punkt (.) verwenden. Die nächsthöhere Ebene in der Struktur wird durch zwei Punkte dargestellt (..). Um beispielsweise in das Elternverzeichnis des aktuellen Verzeichnisses zu wechseln, geben Sie cd .. ein. Vergessen Sie nicht, ein Leerzeichen nach dem Befehl cd einzugeben, um den Befehl von den Optionen zu trennen. Die Eingabeaufforderung zeigt nun der Pfad zum Elternverzeichnis des Verzeichnisses, in dem Sie den Befehl ausgeführt haben. Um zu einem Verzeichnis zu wechseln, das sich zwei Ebenen über dem aktuellen Verzeichnis befindet, geben Sie cd ../.. ein. ls -l ../.. listet den Inhalt des zwei Ebenen höher liegenden Verzeichnisses auf.

3.1.3.1. Beispiele, wie Sie Dateien ansprechen können

In Abschnitt 3.1.3, „Arbeiten mit Verzeichnissen und Dateien“ wurden relative Pfade bei der Eingabe von cd verwendet. Sie können auch absolute Pfade einsetzen. Angenommen, Sie möchten eine Datei aus Ihrem Home-Verzeichnis in ein Unterverzeichnis von /tmp kopieren:

  1. Erstellen Sie ausgehend von Ihrem Home-Verzeichnis ein Unterverzeichnis in /tmp:

    1. Wenn das aktuelle Verzeichnis nicht Ihr Home-Verzeichnis ist, geben Sie cd ~ ein, um zum Home-Verzeichnis zu wechseln. Sie können von jeder Stelle im Dateisystem zu Ihrem Home-Verzeichnis wechseln, indem Sie cd ~ eingeben.

    2. Geben Sie in Ihrem Home-Verzeichnis mkdir /tmp/test ein. mkdir steht für „make directory“. Mit diesem Befehl erstellen Sie ein neues Verzeichnis mit dem Namen test im Verzeichnis /tmp. In diesem Fall verwenden Sie einen absoluten Pfad, um das Verzeichnis zu erstellen.

    3. Geben Sie nun ls -l /tmp ein, um zu überprüfen, was geschehen ist. Das neue Verzeichnis test sollte nun als Inhalt des Verzeichnisses /tmp angezeigt werden.

  2. Erstellen Sie nun eine neue Datei in Ihrem Home-Verzeichnis und kopieren Sie sie mithilfe eines relativen Pfads in das Verzeichnis /tmp/test.

    1. Geben Sie den Befehl touch myfile.txt ein. Durch den Befehl touch mit der Option myfile.txt wird eine neue, leere Datei mit dem Namen myfile.txt in Ihrem aktuellen Verzeichnis erstellt.

    2. Prüfen Sie dies, indem Sie ls -l eingeben. Die neue Datei sollte in der Inhaltsliste angezeigt werden.

    3. Geben Sie cp myfile.txt ../tmp/test ein. Dadurch wird myfile.txt in das Verzeichnis /tmp/test kopiert, ohne den Namen der Datei zu ändern.

    4. Prüfen Sie dies, indem Sie ls -l /tmp/test eingeben. Die Datei myfile.txt sollte nun im Inhalt des Verzeichnisses /tmp/test angezeigt werden.

Um den Inhalt der Home-Verzeichnisse anderer Benutzer aufzulisten, geben Sie ls ~Benutzername ein. Im Beispielverzeichnisbaum in Abbildung 3.4, „Auszug aus einer Standardverzeichnisstruktur“ ist einer der Beispielbenutzer tux. In diesem Fall würde ls ~tux den Inhalt des Home-Verzeichnisses von tux auflisten.

[Note]Leerzeichen in Datei- oder Verzeichnisnamen

Wenn ein Dateiname ein Leerzeichen enthält, geben Sie entweder vor dem Leerzeichen ein Escape-Zeichen (umgekehrter Schrägstrich \) ein oder schließen Sie den Dateinamen in einfache oder doppelte Anführungszeichen ein. Anderenfalls interpretiert die Bash einen Dateinamen wie Eigene Dokumente als den Namen von zwei Dateien oder Verzeichnissen. Der Unterschied zwischen einfachen und doppelten Anführungszeichen ist, dass bei doppelten Anführungszeichen eine Variablenerweiterung stattfindet. Einfache Anführungszeichen gewährleisten, dass die Zeichenfolge von der Shell buchstäblich interpretiert wird.

3.1.4. Nützliche Funktionen der Shell

Befehle in die Bash einzugeben, kann mit höherem Tippaufwand verbunden sein. Im Folgenden lernen Sie einige Funktionen der Bash kennen, die Ihnen die Arbeit erleichtern und Ihnen Tippaufwand ersparen können.

3.1.4.1. History und Ergänzung

Standardmäßig „merkt“ sich die Bash die Befehle, die Sie eingeben. Diese Funktion wird History genannt. Wenn Sie einen Befehl wiederholen wollen, der bereits eingegeben wurde, drücken Sie einfach , bis die Einagebauffoderung den vorherigen Befehl anzeigt. Sie können auch in der Liste der eingegebenen Befehlen nach vorne blättern, indem Sie drücken. Sie haben immer die Möglichkeit, den betreffenden Befehl zu ändern, beispielsweise können Sie den Namen einer Datei ändern, bevor Sie den Befehl durch Drücken der Eingabe ausführen. Um den Befehl zu ändern, verschieben Sie den Cursor mit den Pfeiltasten an die gewünschte Position und beginnen Sie die Eingabe. Verwenden Sie Strg-R, um die History zu durchsuchen.

Das Ergänzen von Datei- oder Verzeichnisnamen nach der Eingabe der ersten Buchstaben ist eine weitere hilfreiche Funktion von Bash. Geben Sie hierzu die ersten Buchstaben einer vorhandenen Datei oder eines vorhandenen Verzeichnisses ein und drücken Sie die →|. Wenn der Dateiname bzw. Pfad eindeutig identifiziert werden kann, wird er sofort ergänzt und der Cursor springt zum Ende des Dateinamens. Anschließend können Sie die nächste Option des Befehls eingeben, falls erforderlich. Wenn der Dateiname oder Pfad nicht eindeutig identifiziert werden kann (beispielsweise, da mehrere Dateinamen vorliegen, die mit denselben Buchstaben beginnen), wird der Dateiname nur so weit ergänzt, bis mehrere Varianten möglich sind. Eine Auflistung dieser Varianten erhalten Sie, wenn Sie ein zweites Mal die Taste →| drücken. Anschließend können Sie die nächsten Buchstaben der Datei bzw. des Pfads eingeben und erneut durch Drücken von →| die Ergänzungsfunktion aktivieren. Wenn Sie Dateinamen und Pfade mithilfe von →| ergänzen, können Sie gleichzeitig überprüfen, ob die Datei bzw. der Pfad, den Sie eingeben möchten, tatsächlich vorhanden ist (und Sie können sicher sein, dass er richtig geschrieben ist).

3.1.4.2. Platzhalter

Ein weiterere Komfortfunktion der Shell sind Platzhalter, die Sie verwenden können, um Pfadnamen zu erweitern. Platzhalter sind Zeichen, die für andere Zeichen stehen. Die Bash kennt drei verschiedene Arten von Platzhaltern:

?

Stimmt genau mit einem zufälligen Zeichen überein

*

Stimmt mit einer beliebigen Zahl an Zeichen überein

[set]

Stimmt mit einem Zeichen aus der Gruppe überein, die in den eckigen Klammern angegeben wurde, die hier durch die Zeichenfolge set dargestellt wird. Als Teil von set können Sie auch Zeichenklassen mit der Syntax [:class:] festlegen, wobei class zu alnum, alpha, ascii usw. gehört.

Wenn Sie ! oder ^ am Beginn der Gruppe verwenden ([!set]) wird eine Übereinstimmung mit einem Zeichen gesucht, das keinem der Zeichen entspricht, die durch set festgelegt wurden.

Angenommen, das Verzeichnis test enthält die Dateien Testfile, Testfile1, Testfile2 und datafile, führt der Befehl ls Testfile? die Dateien Testfile1 und Testfile2 auf. Mit ls Test* enthält die Liste auch Testfile. ls *fil* zeigt alle Beispielsdateien an. Schließlich können Sie den Platzhalter set verwenden, um alle Beispielsdateien zu adressieren, deren letztes Zeichen eine Ziffer ist: ls Testfile[1-9] oder, wenn Sie Klassen verwenden ls Testfile[[:digit:]].

Von den vier Platzhaltertypen beinhaltet das Sternchen die meisten Zeichen. Es kann verwendet werden, um alle im Verzeichnis enthaltenen Dateien in ein anderes zu kopieren oder um alle Dateien mit einem Befehl zu löschen. Der Befehl rm *fil* würde z. B. alle Dateien im aktuellen Verzeichnis löschen, deren Namen die Zeichenfolge fil umfassen.

3.1.4.3. Anzeigen von Dateien mit Less und More

Linux umfasst zwei kleine Programme zum Anzeigen von Textdateien direkt in der Shell: less und more. Anstatt einen Editor zu starten, um eine Datei zu lesen wie Readme.txt, geben Sie einfach less Readme.txt ein, um den Text im Konsolenfenster anzuzeigen. Verwenden Sie die Leertaste, um die Seiten durchzublättern. Verwenden Sie Bild ↑ und Bild ↓, um sich im Text nach vorne oder hinten zu bewegen. Um „less“ zu beenden, drücken Sie Q.

Statt less können Sie auch das ältere Programm more verwenden. Dies ist jedoch weniger praktisch, da Sie nicht zurückblättern können.

Das Programm less hat seinen Namen von dem Konzept less is more (weniger ist mehr) und kann auch verwendet werden, um die Ausgabe von Befehlen auf bequeme Art zu gestalten. Wenn Sie wissen möchten, wie dies funktioniert, lesen Sie Abschnitt 3.1.4.4, „Umleitung und Pipes“.

3.1.4.4. Umleitung und Pipes

Normalerweise ist die Standardausgabe in der Shell der Bildschirm oder das Konsolenfenster und die Standardeingabe erfolgt über die Tastatur. Allerdings bietet die Shell Funktionen, mit denen Sie die Eingabe bzw. Ausgabe an ein anderes Objekt, beispielsweise eine Datei oder einen anderen Befehl, umleiten können. Mithilfe der Symbole > und < beispielsweise können Sie die Ausgabe eines Befehls in eine Datei weiterleiten (Ausgabeumleitung) oder eine Datei als Eingabe für einen Befehl verwenden (Eingabeumleitung). Wenn Sie also die Ausgabe eines Befehls, wie beispielsweise ls in eine Datei schreiben möchten, geben Sie ls -l > file.txt ein. Dadurch wird eine Datei mit dem Namen file.txt erstellt, die eine Inhaltsliste des aktuellen Verzeichnisses enthält, welche Sie durch den Befehl ls erzeugt haben. Wenn jedoch bereits eine Datei mit dem Namen file.txt vorhanden ist, wird mit diesem Befehl die bestehende Datei überschrieben. Sie können diese mit >> verhindern. Durch Eingabe von ls -l >> file.txt wird die Ausgabe des Befehls ls einfach an eine bereits bestehende Datei file.txt angehängt. Wenn die Datei noch nicht vorhanden ist, wird sie erstellt.

Manchmal ist es auch sinnvoll, eine Datei als Eingabe für einen Befehl zu verwenden. So können Sie beispielsweise mit dem Befehl tr Zeichen ersetzen, die aus einer Datei umgeleitet wurden, und das Ergebnis in die Standardausgabe, den Bildschirm, schreiben. Angenommen, Sie möchten alle Zeichen t in der Datei file.txt aus dem obigen Beispiel durch x ersetzen und das Ergebnis auf dem Bildschirm ausgeben. Geben Sie dazu tr t x < file.txt ein.

Wie die Standardausgabe wird die Standardfehlerausgabe zur Konsole gesendet. Um eine Standardfehlerausgabe an eine Datei mit dem Namen fehler zu senden, hängen Sie 2> fehler an den entsprechenden Befehl an. Sowohl Standardausgabe als auch Standardfehler werden in einer Datei mit dem Namen gesamtausgabe gespeichert, wenn Sie >& Gesamtausgabe anhängen.

Die Verwendung von Pipelines bzw. Pipes ist ebenfalls eine Art von Umleitung. Allerdings ist die Verwendung der Pipe nicht auf Dateien beschränkt. Mit einer Pipe (|) können Sie mehrere Befehle kombinieren, indem Sie die Ausgabe eines Befehls als Eingabe für den nächsten Befehl verwenden. Um beispielsweise den Inhalt Ihres aktuellen Verzeichnisses in less anzuzeigen, geben Sie ls | less ein. Dies ist nur sinnvoll, wenn die normale Ausgabe mit ls zu lang wäre. Wenn Sie z. B. den Inhalt des Verzeichnisses dev mit ls /dev anzeigen, können Sie nur einen kleinen Teil des Fensters sehen. Die gesamte Liste können Sie mit ls /dev | less anzeigen.

3.1.5. Archive und Datenkomprimierung

Da Sie nun bereits eine Reihe von Dateien und Verzeichnissen erstellt haben, möchten Sie vielleicht Archive erstellen und die Daten komprimieren. Angenommen, Sie möchten das gesamte Verzeichnis test in eine Datei packen, die Sie auf einem USB-Stick als Sicherungskopie speichern oder per eine E-Mail versenden können. Verwenden Sie hierzu den Befehl tar (für tape archiver (Bandarchivierung). Durch Eingabe von tar --help können Sie alle Optionen für den Befehl tar anzeigen. Die wichtigste dieser Optionen wird hier erklärt:

-c

(für create) Ein neues Archiv erstellen.

-t

(für table) Inhalt eines Archivs anzeigen.

-x

(für extract) Das Archiv entpacken.

-v

(für verbose) Alle Dateien auf dem Bildschirm anzeigen, während das Archiv erstellt wird.

-f

(für file) Wählen Sie einen Dateinamen für die Archivdatei. Beim Erstellen eines Archivs muss diese Option stets zuletzt gegeben sein.

Um das Verzeichnis test mit allen Dateien und Unterverzeichnissen in ein Archiv mit dem Namen testarchiv.tar zu packen, verwenden Sie die Optionen -c und -f. Zu Testzwecken fügen Sie auch -v hinzu, um den Fortschritt des Archivierens zu verfolgen, obwohl diese Option nicht obligatorisch ist. Nachdem Sie cd verwendet haben, um das Stammverzeichnis zu ändern, in dem sich das Verzeichnis test befand, geben Sie tar -cvf testarchiv.tar test ein. Zeigen Sie danach den Inhalt der Archivdatei mit tar -tf testarchiv.tar an. Das Verzeichnis test mit all seinen Dateien und Verzeichnissen befindet sich immer noch unverändert auf der Festplatte. Um das Archiv zu entpacken, geben Sie tar -xvf testarchiv.tar ein, aber versuchen Sie dies jetzt noch nicht.

Für die Dateikomprimierung ist die offensichtliche Wahl gzip oder bzip2 für ein verbessertes Komprimierungsverhältnis. Geben Sie einfach gzip testarchiv.tar (oder bzip2 testarchiv.tarein; in diesem Beispiel wird jedoch gzip verwendet). Mit ls sehen Sie, dass die Datei testarchiv.tar nicht mehr vorhanden ist und dass die Datei testarchiv.tar.gz stattdessen erstellt wurde. Diese Datei ist viel kleiner und daher besser geeignet für die Übertragung durch E-Mail oder für die Speicherung auf einem USB-Stick.

Entpacken Sie jetzt die Datei im zuvor erstellten test2-Verzeichis. Geben Sie hierzu cp testarchiv.tar.gz test2 ein, um die Datei in dieses Verzeichnis zu kopieren. Wechseln Sie in das Verzeichnis mit cd test2. Ein komprimiertes Archiv mit der Erweiterung .tar.gz kann entzippt werden mit dem Befehl gunzip. Geben Sie gunzip testarchive.tar.gzein ein. Dadurch wird die Datei testarchiv.tar erstellt, die mit tar -xvf testarchiv.tar extrahiert oder „untarred“ werden muss. Sie können ein komprimiertes Archiv auch in einem Schritt entzippen und extrahieren mit tar -xvf testarchiv.tar.gz (das Hinzufügen der Option -z ist nicht mehr erforderlich). Mit ls können Sie sehen, dass ein neues Verzeichnis test mit demselben Inhalt erstellt wurde wie das Verzeichnis test im Stammverzeichnis.

3.1.6. Löschen

Nach diesem Schnellkurs sind Sie mit den Grundlagen der Linux-Shell oder der Befehlszeile vertraut. Sie können Ihr Home-Verzeichnis bereinigen, indem Sie die verschiedenen Testdateien und Verzeichnisse mit den Befehlen rm und rmdir löschen. Unter Abschnitt 3.3, „Wichtige Linux-Befehle“ finden Sie eine Liste der wichtigsten Befehle und eine kurze Beschreibung ihrer Funktionen.