Für UNIX oder Linux sind mehrere Shells verfügbar, die sich geringfügig in ihrem Verhalten und den akzeptierten Befehlen unterscheiden. Die Standard-Shell in openSUSE™ ist Bash (GNU Bourne-Again Shell).
Wenn Sie an einer grafischen Bedienoberfläche angemeldet sind, können Sie eine (Anmelde-)Shell parallel zur Bedienoberfläche oder in einem Terminalfenster innerhalb der grafischen Bedienoberfläche starten. Drücken Sie Ctrl+Alt+F2, um die grafische Bedienoberfläche zu verlassen und auf eine Anmelde-Shell zuzugreifen. Nach der Anmeldung zeigt die Anmeldung Ihren Anmeldenamen gefolgt von @ und dem Hostnamen Ihres Computers. Auf den Hostnamen folgt ein Doppelpunkt und der Pfad zum aktuellen Verzeichnis. Wenn Sie als Systemadministrator (root) angemeldet sind, kennzeichnet Bash dies mit einem Nummernzeichen (#). Direkt nach der Anmeldung ist gewöhnlich das aktuelle Verzeichnis das Home-Verzeichnis des Benutzerkontos, mit dem die Anmeldung erfolgte, und wird durch eine Tilde (~) gekennzeichnet. Wenn Sie bei einem entfernten Computer angemeldet sind, zeigen die an der Eingabeaufforderung angegebenen Informationen immer an, auf welchem System Sie gerade arbeiten. Sie können nun Befehle eingeben und Aufgaben ausführen. Sie melden sich von der Shell ab, indem Sie exit eingeben und Alt+F7 drücken, um zurück zur grafischen Bedienoberfläche zu gelangen. Ihr Desktop und die darauf ausgeführten Anwendungen sind unverändert.
Sie starten ein Terminalfenster in der grafischen Bedienoberfläche von KDE oder GNOME, indem Sie Alt+F2 drücken und xterm eingeben (oder auf das Konsole- oder GNOME-Terminalsymbol in der Kontrollleiste klicken). Auf Ihrem Desktop wird ein Terminalfenster geöffnet. Da Sie bereits an Ihrem Desktop angemeldet sind, zeigt die Eingabeaufforderung die gewöhnliche Anmelde- und Pfadinformation. Sie können nun Befehle eingeben und Aufgaben ausführen wie in jeder beliebigen Shell, die parallel zu Ihrem Desktop ausgeführt wird. Um das Terminalfenster zu schließen, drücken Sie Alt+F4 .
Das Konsole-Fenster bzw. das GNOME-Terminalfenster wird geöffnet. Es enthält die Eingabeaufforderung (Prompt) in der ersten Zeile, wie in Abbildung 20-1. 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, ~) an. Wenn Sie bei 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 20-1 Beispiel eines Bash-Terminalfensters
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 besitzen.
Die folgende Tabelle bietet eine kurze Übersicht über die wichtigsten Verzeichnisse der höheren Ebene auf einem Linux-System. Ausführlichere Informationen über die Verzeichnisse und wichtige Unterverzeichnisse erhalten Sie in der folgenden Liste.
Tabelle 20-1 Überblick über eine Standardverzeichnisstruktur
|
Verzeichnis |
Inhalt |
|---|---|
|
/ |
Root-Verzeichnis, Startpunkt der Verzeichnisstruktur. |
|
/bin |
Grundlegende binäre Dateien, z. B. Befehle, die der Systemadministrator und normale Benutzer brauchen. Enthält gewöhnlich auch die Shells, z. B. Bash. |
|
/boot |
Statische Dateien des Bootloaders. |
|
/dev |
Erforderliche Dateien für den Zugriff auf Host-spezifische Geräte. |
|
/etc |
Host-spezifische Systemkonfigurationsdateien. |
|
/lib |
Grundlegende freigegebene Bibliotheken und Kernel-Module. |
|
/media |
Einhängepunkte für Wechselmedien. |
|
/mnt |
Einhängepunkt für das temporäre Einhängen eines Dateisystems. |
|
/opt |
Add-On-Anwendungssoftwarepakete. |
|
/root |
Home-Verzeichnis für den Superuser root. |
|
/sbin |
Grundlegende Systembinärdateien. |
|
/srv |
Daten für Dienste, die das System bereitstellt. |
|
/tmp |
Temporäre Dateien. |
|
/usr |
Sekundäre Hierarchie mit Nur-Lese-Daten. |
|
/var |
Variable Daten wie Protokolldateien. |
|
/windows |
Nur verfügbar, wenn sowohl Microsoft Windows* als auch Linux auf Ihrem System installiert ist. Enthält die Windows-Daten. |
Die folgende Liste bietet detailliertere Informationen und bietet einige Beispiele für die Dateien und Unterverzeichnisse, die in den Verzeichnissen gefunden werden können:
Enthält die grundlegenden Shell-Befehle, die root und andere Benutzer verwenden können. Zu diesen Befehlen gehören ls, mkdir, cp, mv, rm und rmdir. /bin enthält auch Bash, die Standard-Shell in openSUSE.
Enthält Daten, die zum Booten erforderlich sind, z. B. den Bootloader, den Kernel und andre Daten, die verwendet werden, bevor der Kernel mit der Ausführung von Programmen im Benutzermodus beginnt.
Enthält Gerätedateien, die Hardware-Komponenten darstellen.
Enthält lokale Konfigurationsdateien, die den Betrieb von Programmen wie das X Window System steuern können. Das Unterverzeichnis /etc/init.d enthält Skripten, die während des Bootvorgangs ausgeführt werden.
Enthält die privaten Daten aller Benutzer, die ein Konto auf dem System haben. Die Dateien, die hier gespeichert sind, können nur durch den Besitzer oder den Systemadministrator geändert werden. Standardmäßig befinden sich Ihr E-Mail-Verzeichnis und Ihre persönliche Desktopkonfiguration hier.
HINWEIS: Home-Verzeichnis in einer Netzwerkumgebung
Wenn Sie in einer Netzwerkumgebung arbeiten, kann Ihr Home-Verzeichnis einem von /home abweichenden Verzeichnis zugeordnet sein.
Enthält grundlegende freigegebene Bibliotheken, die zum Booten des Systems und zur Ausführung der Befehle im Root-Dateisystem erforderlich sind. Freigegebene Bibliotheken entsprechen in Windows DLL-Dateien.
Enthält Einhängepunkte für Wechselmedien, z. B. CD-ROMs, USB-Sticks und Digitalkameras (sofern sie USB verwenden). Unter /media sind beliebige Laufwerktypen gespeichert, mit Ausnahme der Festplatte Ihres Systems. Sobald Ihr Wechselmedium eingelegt bzw. mit dem System verbunden und eingehängt wurde, können Sie von hier darauf zugreifen.
Dieses Verzeichnis bietet einen Einhängepunkt für ein temporär eingehängtes Dateisystem. root kann hier Dateisysteme einhängen.
Reserviert für die Installation zusätzlicher Software. Optionale Software und größere Add-On-Pakete, z. B. die Desktopumgebungen KDE und GNOME, können hier gefunden werden.
Home-Verzeichnis für den Benutzer root. Hier befinden sich persönliche Daten von "root".
Wie durch das s angegeben, enthält dieses Verzeichnis Dienstprogramme für den Superuser. /sbin enthält Binärdateien, die zusätzlich zu den Dateien in /bin wesentlich für Booten und Wiederherstellen des Systems erforderlich sind.
Enhält Daten für Dienste, die das System bereitstellt, z. B. FTP und HTTP.
Dieses Verzeichnis wird von Programmen benutzt, die eine temporäre Speicherung von Dateien verlangen. Standardmäßig werden die in /tmp gespeicherten Daten regelmäßig gelöscht.
HINWEIS: Speichern von Dateien in /tmp
Speichern Sie in /tmp keine Dateien, die Sie behalten möchten. Dieses Verzeichnis wird automatisch durch das System bereinigt, wobei Dateien gelöscht werden.
/usr hat nichts mit Benutzern ("user") zu tun, sondern ist das Akronym für UNIX-Systemressourcen. Die Daten in /usr sind statische, schreibgeschützte Daten, die auf verschiedenen Hosts freigegeben sein können, die den Filesystem Hierarchy Standard (FHS) einhalten. Dieses Verzeichnis enthält alle Anwendungsprogramme und bildet eine sekundäre Hierarchie im Dateisystem. /usr enthält eine Reihe von Unterverzeichnissen, z. B. /usr/bin, /usr/sbin, /usr/local und /usr/share/doc.
Enthält Programme, die für den allgemeinen Zugriff verfügbar sind.
Enthält Programme, die für den Systemadministrator reserviert sind, z. B. Reparaturfunktionen.
In diesem Verzeichnis kann der Systemadministrator lokale, verteilungsunabhängige Erweiterungen installieren.
Enthält verschiedene Dokumentationsdateien und die Versionshinweise für Ihr System. Im Unterverzeichnis manual befindet sich eine Online-Version dieses Handbuchs. Wenn mehrere Sprachen installiert sind, kann dieses Verzeichnis die Handbücher für verschiedene Sprachen enthalten.
Im Verzeichnis packages befindet sich die Dokumentation zu den auf Ihrem System installierten Software-Paketen. Für jedes Paket wird ein Unterverzeichnis /usr/share/doc/packages/Paketname angelegt, das häufig README-Dateien für das Paket und manchmal Beispiele, Konfigurationsdateien oder zusätzliche Skripten umfasst.
Wenn HOWTOs (Verfahrensbeschreibungen) auf Ihrem System installiert sind, enhält /usr/share/doc auch das Unterverzeichnis howto mit zusätzlicher Dokumentation zu vielen Aufgaben bei Setup und Betrieb von Linux-Software.
Während /usr statische, schreibgeschützte Daten enthält, ist /var für Daten, die während des Systembetriebs geschrieben werden und daher variabel sind, z. B. Protokolldateien oder Spooling-Daten. Beispielsweise befinden sich die Protokolldateien Ihres Systems in /var/log/messages (nur für "root" zugreifbar).
Nur verfügbar, wenn sowohl Microsoft Windows als auch Linux auf Ihrem System installiert ist. Enthält die Windows-Daten, die auf der Windows-Partition Ihres Systems verfügbar sind. Ob Sie die Daten in diesem Verzeichnis bearbeiten können, hängt vom Dateisystem ab, das Ihre Windows-Partition verwendet. Falls es sich um FAT32 handelt, können Sie die Dateien in diesem Verzeichnis öffnen und bearbeiten. In einem NTFS-Dateisystem können Sie jedoch Ihre Windows-Dateien nur von Linux aus lesen, aber nicht ändern. Weitere Informationen dazu finden Sie unter Abschnitt 11.3, Zugreifen auf Dateien auf verschiedenen Betriebssystemen am selben Computer,
(↑ Start ).
Befehle in Bash einzugeben, kann mit höherem Tippaufwand verbunden sein. Im Folgenden lernen Sie einige Funktionen von Bash kennen, die Ihre Arbeit erleichtern und viel Tippaufwand ersparen können.
Standardmäßig merkt
sich Bash die Befehle, die Sie eingeben. Diese Funktion wird History genannt. Um einen Befehl zu wiederholen, der bereits eingegeben wurde, drücken Sie ↑, bis die Eingabeaufforderung den vorherigen Befehl anzeigt. Drücken Sie ↓, um sich vorwärts durch die Liste der zuvor eingegebenen Befehle zu bewegen. Verwenden Sie Strg+R, um die Chronik zu durchsuchen.
Sie können den ausgewählten Befehl ändern, indem Sie beispielsweise den Namen einer Datei ändern, bevor Sie den Befehl durch Drücken von Enter ausführen. Um die Kommandozeile zu bearbeiten, verschieben Sie den Cursor mit den Pfeiltasten an die gewünschte Position und beginnen die Eingabe.
Die Ergänzung eines Datei- oder Verzeichnisnamens 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 Tab. 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 (da mehrere Dateinamen mit denselben Buchstaben beginnen), wird der Dateiname nur so weit ergänzt, bis mehrere Varianten möglich sind. Eine Auflistung der Optionen erhalten Sie, indem Sie ein zweites Mal die Taste Tab drücken. Anschließend können Sie die nächsten Buchstaben der Datei bzw. des Pfads eingeben und erneut die Ergänzungsfunktion durch Drücken von Tab aktivieren. Wenn Sie Dateinamen und Pfade mithilfe von Tab 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).
Eine weitere Komfortfunktion der Shell sind Platzhalter, die Sie verwenden können, um Dateinamen zu erweitern. Platzhalter sind Zeichen, die für andere Zeichen stehen. Bash kennt drei verschiedene Arten von Platzhaltern:
Stimmt genau mit einem zufälligen Zeichen überein
Stimmt mit einer beliebigen Zahl an Zeichen überein
Stimmt mit einem Zeichen aus der Gruppe überein, die in den eckigen Klammern angegeben wurde und 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.
Der Befehl ls Testfile? führt die Dateien Testfile1 und Testfile2 auf.
Der Befehl ls Testfile? führt die Dateien Testfile1 und Testfile2 auf.
Bei Verwendung des Befehls ls Test* umfasst die Liste auch Testfile.
Der Befehl ls *fil* führt alle Beispieldateien auf.
Verwenden Sie den Platzhalter set, um alle Beispieldateien 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 beispielsweise alle Dateien im aktuellen Verzeichnis löschen, deren Namen die Zeichenfolge fil umfassen.
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 Pfeil-Aufwärts und Pfeil-Abwärts, 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 Umleitung und Pipes.
Normalerweise ist die Standardausgabe der Shell Ihr 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.