Kapitel 19. Arbeiten mit der Shell

Inhaltsverzeichnis

19.1. Verwenden der Bash-Shell
19.2. Benutzer und Zugriffsberechtigungen
19.3. Wichtige Linux-Befehle
19.4. Der vi-Editor

Zusammenfassung

Obwohl grafische Bedienoberflächen zunehmend wichtiger und benutzerfreundlicher geworden sind, sind sie nicht die einzige Kommunikationsmöglichkeit mit Ihrem System. Ein Kommandozeilen-Interpreter, in Unix/Linux als Shell bezeichnet, bietet ein höchst flexibles und effizientes Mittel zur textorientierten Kommunikation mit Ihrem System.

Gerade bei der Administration spielen Shell-basierte Anwendungen eine besonders große Rolle, wenn Sie zum Beispiel Computer über langsame Netzwerkverbindungen steuern müssen oder als Administrator Aufgaben von der Kommandozeile ausführen möchten.

In diesem Kapitel werden einige grundlegende Konzepte besprochen, die Sie kennen sollten, um die Kommandozeile effizient nutzen zu können. Sie erfahren hier mehr über die Verzeichnisstruktur und das Benutzer- und Berechtigungskonzept von Linux und Sie erhalten einen Überblick über die wichtigsten Shell-Kommandos sowie eine kurze Einleitung in den Editor vi, der unter Unix und Linux als Standardeditor immer zur Verfügung steht.

19.1. Verwenden der Bash-Shell

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 Strg-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 an. 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 19.1, „Beispiel eines Bash-Terminalfensters“. Die Eingabeaufforderung zeigt normalerweise folgende Informationen an: Ihren Anmeldenamen (in diesem Fall tux), den Hostnamen Ihres Rechners (hier knox) und den aktuellen Pfad (in diesem Fall Ihr durch das Tilde-Symbol ~ gekennzeichnetes Home-Verzeichnis). 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 19.1. Beispiel eines Bash-Terminalfensters

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.

19.1.1. Die Verzeichnisstruktur

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

/home

Enthält die Home-Verzeichnisse aller Benutzer, die ein Konto auf dem System haben. Nur das Home-Verzeichnis von root befindet sich nicht unter /home, sondern unter /root.

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

/bin

Enthält die grundlegenden Shell-Befehle, die root und andere Benutzer verwenden können. Zu diesen Kommandos gehören ls, mkdir, cp, mv, rm und rmdir. /bin enthält auch Bash, die Standard-Shell in openSUSE.

/boot

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.

/dev

Enthält Gerätedateien, die Hardware-Komponenten darstellen.

/etc

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.

/home/Benutzername

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 hier Ihr E-Mail-Verzeichnis und Ihre persönliche Desktopkonfiguration in Form von verborgenen Dateien und Verzeichnissen. KDE-Benutzer finden die persönlichen Konfigurationsdaten für den Desktop unter .kde, GNOME-Benutzer unter .gconf. Informationen zu verborgenen Dateien finden Sie unter Abschnitt „Wichtigste Merkmale“ (Kapitel 7, Grundlegende Konzepte, ↑Start).

[Note]Home-Verzeichnis in einer Netzwerkumgebung

Wenn Sie in einer Netzwerkumgebung arbeiten, kann Ihr Home-Verzeichnis einem von /home abweichenden Verzeichnis zugeordnet sein.

/lib

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.

/media

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.

/mnt

Dieses Verzeichnis bietet einen Einhängepunkt für ein temporär eingehängtes Dateisystem. root kann hier Dateisysteme einhängen.

/opt

Reserviert für die Installation zusätzlicher Software. Hier finden Sie Software- und größere Addon-Programmpakete. KDE3 befindet sich hier, während KDE4 und GNOME nach /usr verschoben wurden.

/root

Home-Verzeichnis für den Benutzer root. Hier befinden sich persönliche Daten von "root".

/sbin

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.

/srv

Enhält Daten für Dienste, die das System bereitstellt, z. B. FTP und HTTP.

/tmp

Dieses Verzeichnis wird von Programmen benutzt, die eine temporäre Speicherung von Dateien verlangen.

/usr

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

/usr/bin

Enthält Programme, die für den allgemeinen Zugriff verfügbar sind.

/usr/sbin

Enthält Programme, die für den Systemadministrator reserviert sind, z. B. Reparaturfunktionen.

/usr/local

In diesem Verzeichnis kann der Systemadministrator lokale, verteilungsunabhängige Erweiterungen installieren.

/usr/share/doc

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.

/var

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

/windows

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 „Zugreifen auf Dateien auf verschiedenen Betriebssystemen am selben Computer“ (Kapitel 11, Kopieren und Freigeben von Dateien, ↑Start).