Warum sollte man die Linux Shell verwenden!

Dieser Artikel ist der erste von 10 Teilen zum Thema Linux Terminal in 10 Teilen. Er bietet einen ersten Überblick über die Wichtigkeit der Shell und gibt einige Ausblicke auf deren Anwendung, welchen in den Teilen 2-10 erläutert werden.

» Zur Übersicht der Artikelserie «

Grundlegendes:

Heutzutage sind die meisten der Ansicht, dass das Verwenden des Terminals, also des Konsolenfensters bzw. in Linux spricht man von der Shell, veraltet wäre. Meistens herrscht sogar die Meinung Auf der Kommandozeile arbeiten doch nur „Freaks“! – warum sollte man diese verwenden, wenn man eine schicke grafische Oberfläche hat (GUI = Graphical User Interface). Diese Meinung, welche ich in meinem Beruf sehr oft höre, ist allerdings nicht ganz richtig. Wer wirklich mit einem Betriebssystem effektiv arbeitet, egal ob es jetzt Windows oder Linux ist, der verwendet die Konsole. Man sollte auch bedenken, die Befehle sind auf der Konsole bei jeder Linux Distribution nahezu gleich. Nahezu deshalb, da es schon kleine Unterschiede zwischen einigen Distribution gibt. Z.B. verwenden Debian Derivate (Ubuntu, Kali-Linux) das Debian Paketsystem. Im Gegenzug dazu verwenden Red Hat Derivate (Open Suse) das RPM-Paketsystem. Möchte man eine Konfiguration per grafischer Oberfläche vornehmen so heißt es meistens erst mal suchen, wo sich die Einstellung befindet. Für Linux Systeme gibt es ja bekanntlich viele Desktopoberflächen. (KDE, Unity, Gnome, Mate etc..) Natürlich bietet die Shell auch die Möglichkeit Skripte zu erstellen um gewisse Sachverhalte zu automatisieren. Man denke z.B. nur an das Backup. Oft gibt es gar keine GUI. Ein Serverbetriebssystem muss nicht unbedingt eine Graphische Oberfläche besitzen. Im Gegenteil meistens lässt man diese bei der Installation weg. Bei Linux Servern ist das eigentlich Standard. Windows empfiehlt jetzt mittlerweile auch schon, dass man den Server ohne GUI installiert. Es wird sich bestimmt der eine oder andere Fragen warum das den! Erstens eine Desktopoberflächen benötigt Systemressourcen, welche man vielleicht an anderer Stelle mehr benötigt und zweites bietet die GUI eine Angriffsfläche. Also ist sie prinzipiell wieder ein Sicherheitsrisiko.

Fakt ist auf jeden Fall, die Konsole ist für den Systemadministrator unverzichtbar, darum möchte ich euch in diesem Artikel eine kurze Einführung in das Linux Terminal geben. Natürlich kann dieser Artikel nur einen kurzen Überblick mit einer Einführung sein, den die Möglichkeiten der Shell sind nahezu unbegrenzt und alles abzudecken würde den Rahmen des Artikels bei weitem sprengen.

Was kann ich nach dem öffnen des Terminals alles auslesen

In der Regel findet man das Terminal als Icon in der Startleiste oder in der Kontrollleiste. Bei dem Unity Desktop muss man einfach „Terminal“ eintippen und schon bekommt man das Icon im Dashboard zu Gesicht. Ich verwende gerne Kubuntu oder Linux Mint.
So würde man diese Ausgabe interpretieren:

[AngemeldeterBenutzer]@[Rechnername]:[Home-Verzeichnis des angemeldeten Benutzers][Art- des Benutzers]

D.h. nun folgendes: Wir sind mit dem Benutzer Markus am PC vkubuntu angemeldet. Aktuell befinden wir uns um Home-Verzeichnis (/home/markus) von Markus und Markus ist ein Standardbenutzer. Das Home-Verzeichnis erkennen wir daran, dass das „~“ Zeichen ausgegeben wird und Standardbenutzer sind wir, weil am Ende der Ausgabe ein „$“ Zeichen zu sehen ist. Wären wir als Administrator angemeldet so würde das „#“ Zeichen am Ende stehen.


Wobei zusätzlich gleich noch der Befehl su (switch user) verwendet wurde. Damit kann man ganz einfach den Benutzer auf der Konsole wechseln. Natürlich muss ich das Passwort des anderen Benutzers kennen. Möchte man das Passwort ändern so geht das mit passwd. Übrigens wenn man nicht mehr weiß, wo man sich im Linux Verzeichnis befindet, so kann man das sehr leicht mit dem Befehl pwd (print working directory) ausfindig machen.

Kurz zusammengefasst:

~

Home-Verzeichnis des angemeldeten Benutzer: hier: /home/markus

$

Angemeldet mit Standardbenutzerrechten

#

Angemeldet mit administrativen Rechten

su

Benutzer wechseln

passwd

Ändern des Passworts

pwd

Ausgabe des aktuellen Verzeichnisses

Wie erhält man im Terminal Hilfe

Das Linux Terminal verfügt über eine sehr gute Hilfe. Sie erhält man meisten über die Eingabe von: Befehl –help

Beispiel:

ls –help

Weiterhin bietet die Linux Shell eine Manual an. Diese ist auf Englisch und sehr ausführlich. Für jeden Befehl kann man sie mit „man Befehl“ öffnen.

Beispiel:

man ls

Wenn man die obigen Ausgaben vergleicht, wir man feststellen, dass die Manual um einiges umfangreicher ist als help. Gerade wenn man bestimmte Optionen zu einem Befehl sucht, wird man hier meist jeher fündig.

Bleiben wir noch kurz bei dem „ls“ Befehl. Dieser listet alle vorhanden Dateien und Verzeichnisse auf. Jedoch kann er mit unterschiedlichen Optionen verwendet werden. Möchte man mehr Informationen, so nimmt man die Optionen „-la“ hinzu.

ls -la

Ein Vergleich macht sofort deutlich, wie groß die Unterschiede sind. „l“ steht für list und „a“ für all. Es werden also auch versteckte Dateien (beginnen immer mit einem Punkt) aufgelistet. Einen guten Überblick, was die Angaben nun alles bedeuten, bietet das folgende Bild:

Wie navigiert man im Dateisystem

Die Navigation gestaltet sich recht einfach. Generell muss man zunächst erst mal wissen, dass das Linux System einen sogenannten Verzeichnisbaum besitzt. Dieser werde als FHS (Filesystem Hierarchy Standard ) bezeichnet. Ein System wo man verschiedene Laufwerke mit Laufwerkbuchstaben anspricht (so ist es bei den Windows Betriebssystemen) gibt es nicht. Alles wir über Verzeichnisse organisiert. Auch das Einbinden von USB-Stick oder Festplatten. Als oberstes Verzeichnis steht immer das Wurzelverzeichnis (/). Ausgehend davon gibt es verschiedene Verzeichnisse für verschiedene Zwecke. z.B. Das Home-Verzeichnis (/home/markus) indem sämtliche persönliche Verzeichnisse der Benutzer angelegt sind. Oder das /dev Verzeichnis für Gerätedateien oder um noch ein weiteres Beispiel zu nennen das /etc Verzeichnisse für die Konfigurationsdateien.

Ein Wechsel in ein anderes Verzeichnis erfolgt über cd.

Ausgehend von dem aktuellen Verzeichnis kann man entweder einen relativen Pfad oder einen absoluten Pfad angeben.

Absolute Pfadangabe: Sie beginnt immer beim Wurzelverzeichnis.

Beispiel: Wir wechseln in das document Verzeichnis zum Ordner howto

cd /home/markus/document/howto

Relativer Pfad: Diese Angabe beginnt immer beim aktuell gesetztem Verzeichnis.

/home/markus
cd document/howto

Wie sucht bzw. findet man bestimmte Dateien bzw. Verzeichnisse

Generell kann man die Shell verwenden um bestimmte Dateien oder Verzeichnisse zu suchen. Man gibt dann sogenannte Jokerzeichen an. Diese werden im Fachjargon als Reguläre Ausdrücke bezeichnet. Einige wichtig Jokerzeichen sind u.a. folgende.

  • ?: steht für genau ein beliebiges Zeichen
  • *: steht für kein oder beliebig viele Zeichen
  • [123]: genau eines der angegebenen Zeichen
  • [a-g]: ein Zeichen aus dem angegebenen Bereich
  • [!abc]: keines der angegebenen Zeichen
  • [^abc]:keines der angegebenen Zeichen

Beispiel: Es werden alle Dateien angezeigt, die mit einem Buchstabe von c-f beginnen.

ls [c-f]*

Neben dieser einfachen Möglichkeit gibt es natürlich unter Linux noch viele weitere. Zum einen wäre hier der Befehl find. Da find sehr umfangreich ist, ist es ratsam die Manual als Hilfe heranzuziehen. Weitere mögliche Programm sind noch awk, sed und grep. Diese besitzen eine spezielle Syntax und es bedarf doch etwas an Zeit, damit man diese Programm durchdringt. Einfacher geht es noch mit locate, whereis und which. Am Besten ist es immer, wenn man die Befehle selbst einfach mal testet.

Wie bearbeitet man Konfigurationsdateien

Ist man nun auf der Konsole nach der gesuchten Konfigurationsdatei fündig geworden, so stellt sich die Frage, wie man diese bearbeitet. Von Windows kennen wir ja bereits die grafischen Editoren wie notepad. Aber wie sieht es jetzt in Linux rein auf der Konsole aus. Einer und auch glaube ich der älteste Editor ist vi. Dieser ist allerdings nicht trivial zu bedienen. Hier werden verschiedene Tastenkombinationen benötigt um die unterschiedlichen Modis (Kommando, Eingabe) zu erreichen. Aber dieser Editor ist auf jedem Linux System vorhanden. Auch auf einem Android Handy. Sollte man root-Rechte besitzen bitte immer mit Bedacht arbeiten. Man kann hier relativ schnell viel zerstören. Ein weiterer und durchaus empfehlenswerter Editor ist nano. Dieser ist wesentlich einfacher zu bedienen und für die Anfänger mit dem Linux Terminal sollte man diesen auch verwenden.

Beispiele, was man mit dem Terminal alles machen kann

Am Ende meines kleinen Artikels, möchte ich euch noch einige Beispiele zeigen, was man so alles mit dem Terminal konfigurieren kann. Überlegt euch ruhig mal dazu, wo müsste ich überall mit der Maus klicken, damit ich zum gleichen Ergebnisse komme. Und bedenkt dabei vielleicht, ein Systemadministrator administriert meiste nicht nur einen PC!

  1. Neuen Benutzer mit folgenden Eigenschaften anlegen:Name: it-learner, Kommentar: lehrling, Gruppe: schueler, Standardshell: bash
    sudo useradd it-learner -c „lehrling“ -g schueler -s /bin/bash
  2. Temporäre Änderung der IP-Adresse:IP: 192.168.99.12, Gateway: 192.168.99.254. Subnetzmaske: 255.255.255.0, DNS: 192.168.99.254
    sudo ifconfig eth0 192.168.99.12 broadcast 192.168.99.255 netmask 255.255.255.0
    sudo route add default gw 192.168.99.254

    Möchte man die Adresse dauerhaft ändern, so muss man diese je nach verwendeter Distribution in einer Linux Konfigurationsdatei konfigurieren.

    Entweder:

    /etc/network/interface

    Oder:

    /etc/NetworkManager/system-connections
  1. Festplatte in das System einbindenDie Festplatte im /dev/sdc1 soll in das Verzeichnis /backup eingebunden werden
    mount /dev/sdc1 /backup
  2. Rechte auf ein Verzeichnis setzenAuf das Verzeichnis /backup soll der Root Lesen, Schreiben und Ausführen dürfen, die Gruppe nur lesen und der Rest nix.
    chmod 740 backup

Fazit

Die Macht des Terminals, sollte man auf keinen Fall unterschätzen. Mit diesem Werkzeug kann man Linux Systeme hervorragend administrieren. Wer viel mit Linux arbeitet, für den ist es auf alle Fälle lohnenswert sich in die Thematik des Terminals hinein zu arbeiten.

» Zur Übersicht der Artikelserie «          » Teil 2 «