| FOTO | AUTO | EDV | AUDIO |

Dies ist eine alte Version des Dokuments!


Arbeiten mit der Shell

In der Informatik bezeichnet man als Shell die Software, die den Benutzer in irgendeiner Form mit dem Computer verbindet. Zu den typischen Aufgaben gehören etwa die Bereitstellung von Kerneldiensten oder das Anbieten von Oberflächen für diverse Systemkomponenten. Der Begriff „Shell“ (englisch für „Hülle“ oder „Außenhaut“) stammt von Muschelschalen und soll entsprechend eine Oberfläche zwischen dem Anwender und dem Inneren (den Kernel-Komponenten) darstellen. Bei Betriebssystemen gibt es zwei Arten von Shells, die Kommandozeile (englisch Command-Line Interface CLI) und die grafischen Benutzeroberflächen (englisch Graphical User Interface GUI). Jedoch wird umgangssprachlich meist der Kommandozeileninterpreter als Shell bezeichnet.
Weitere Informationen unter: http://de.wikipedia.org/wiki/Unix-Shell

Dieses Kapitel soll Ihnen zeigen, wie man sich die tägliche Arbeit mit der bash (Bourne-Again-Shell) erleichtern kann.

die erste Zeile

Schon an der ersten Zeile der Shell können viele Informationen abgelesen werden

[root@serverlein ~]#
   |       |     | |->  Rechte (#=root, $=user)
   |       |     |--->  aktueller Pfad (~=Heimatordner) 
   |       |--------->  Servername
   |----------------->  Username

Die Kommando-History

Das einfachste Feature der bash, das Ihnen etwas Arbeit abnimmt, sollten Sie unbedingt kennen: die Kommando-History. Sie speichert die zuletzt eingegebenen Befehle. Sie können diese abrufen und brauchen sie nicht erneut einzugeben, um sie wieder aufzurufen. Zudem bietet die bash die Möglichkeit, diese Befehle zu editieren.
Eine Übersicht über die in der History enthaltenen Befehle liefert Ihnen ein bloßer Aufruf von history. Durch Angabe einer Nummer bekommen Sie die letzten n Einträge angezeigt.

history 10

Unerwünschte Einträge in der History können Sie über history -d <Nummer> aus der History-Liste löschen.

Nehmen wir einmal an, es wurde der Befehl find /usr/local/bin -name „Dateiname“ ausgeführt. Nun möchten Sie den gleichen Befehl mit einem anderen Dateinamen ausführen. Um nicht alles noch einmal eintippen zu müssen, können Sie durch die Cursor-Taste Nach oben den zuletzt eingegebenen Befehl in die Kommandozeile laden.

Durch erneutes Betätigen der Nach-oben-Taste lädt die bash wiederum den Befehl, der vor dem letzten aufgerufen wurde, in die Kommandozeile und so weiter – so einfach ist das. Mit der Nach-unten-Taste können Sie die History wieder vorwärts durchsuchen.

Strg + R

Bei diesem Verfahren wird Ihnen automatisch von der bash angezeigt, welcher Befehl ausgeführt werden würde, während Sie die Kommandozeile editieren:

`un': uname

Der in der Eingabe befindliche Befehl wird aus dem Inhalt der Bash-History logisch erweitert.

Automatische Vervollständigung von Dateinamen

Ein ähnlich praktisches Feature wie die Kommando-History stellt die automatische Vervollständigung von Dateinamen dar. Sie wird in der bash durch die Tab-Taste angesteuert. Da unter Unix auch Programme Dateien darstellen, funktioniert dieses Feature natürlich auch mit diesen.

Bei der Nutzung der Tab-Taste sind allerdings zwei Fälle zu unterscheiden:

  • Es ist nur eine passende Datei vorhanden.
  • Es sind mehrere passende Dateien vorhanden.

Nur ein Kandidat

Für den ersten Fall erstellen wir ein Beispielverzeichnis, in dem wir eine Datei mit dem Namen abc.txt unterbringen. Listing 7.65 Beispielverzeichnis mit einer Datei erstellen

$ mkdir test
$ touch test/abc.txt
$ cd test

Verwenden wir nun ein Programm wie /bin/ls, dem wir diese Datei als Parameter übergeben, müssen wir, da es nur eine Datei im Verzeichnis gibt, bloß die Tab-Taste betätigen, und die bash setzt uns den Dateinamen automatisch an die gewünschte Position in der Eingabe.

Versuchen Sie es einmal selbst: Wechseln Sie in das neue Verzeichnis, geben Sie ls und ein Leerzeichen ein, und drücken Sie die Tab-Taste. Die bash sollte nun den Dateinamen abc.txt automatisch in die Befehlszeile schreiben.

Mehrere Kandidaten

Nun erstellen wir im Verzeichnis noch eine Datei mit dem Namen xyz.txt. Wenn Sie das letzte Beispiel unter den neuen Bedingungen wiederholen, wird es nicht ohne weiteres funktionieren. Die bash weiß nicht von selbst, welche der beiden Dateien sie als Parameter übergeben soll. Der Trick funktioniert nun so, dass so viele Zeichen des Dateinamens eingegeben werden, bis es nur noch einen Dateinamen gibt, auf den die ersten Zeichen zutreffen – in diesem Fall genügt der erste Buchstabe der Datei (entweder ein »a« oder ein »x«), da kein Dateiname gleiche Zeichen enthält. Wird dann erneut die Tab-Taste gedrückt, vervollständigt die bash den Dateinamen wieder automatisch.

Gleiche Anfangsbuchstaben

Doch die bash kann Ihnen noch ein Stück Arbeit abnehmen. Nehmen wir an, es seien zwei Dateien abc und abd in einem Verzeichnis vorhanden. Sofern es sowieso keine Wahl zwischen den Zeichen gibt, bringt eine Betätigung der Tab-Taste immer diese Zeichen auf den Monitor. Drücken Sie also in solch einem Verzeichnis die Tab-Taste, so schreibt die bash Ihnen die beiden ersten Zeichen (da diese sowieso gleich sind und von Ihnen eingegeben werden müssten) auf den Bildschirm. Sie müssen anschließend nur noch ein »c« bzw. »d« eingeben.

Für den Fall, dass im Verzeichnis noch die Datei xyz vorhanden ist, müsste der erste Buchstabe wieder eingegeben werden, da nun wieder zwei Fälle eintreten könnten.

Doppel-Tab

Wenn mehrere Dateien vorhanden sind, können Sie die Tab-Taste auch zweimal betätigen, um sich während der Befehlseingabe eine Übersicht über die Dateien im Verzeichnis zu verschaffen. Durch dieses doppelte Betätigen liefert Ihnen die bash immer die nach Ihrer bisherigen Eingabe noch möglichen Dateiauswahlen.

Das bedeutet im Beispiel: Hätten Sie wieder die drei Dateien xyz, abc und abd im Verzeichnis, so würde Ihnen die bash zunächst alle drei auflisten. Wenn Sie dann ein »a« eingeben und die Tab-Taste drücken, gibt Ihnen die bash das »b« (die einzig sinnvolle Möglichkeit) auf dem Bildschirm aus. Wenn Sie dann wieder doppelt die Tab-Taste betätigen, gibt Ihnen die bash nun die beiden noch möglichen Dateinamen abc und abd aus.

Weiterhin ist das Tab-Taste »intelligent«: Am Anfang einer Shelleingabe ist nur ein ausführbares Kommando sinnvoll – entsprechend werden auch nur ausführbare Dateien bzw. Shellbuiltins vervollständigt.

Weitere Informationen

100 wichtige Shellbefehle

Tabelle: Die 100 wichtigsten Linux‑(Red Hat)‑Shellbefehle für Systemadministratoren

Die folgende Übersicht enthält die 100 zentralen Shellbefehle, die ein Linux‑Systemadministrator unter Red Hat Enterprise Linux (RHEL) im täglichen Betrieb benötigt. Die Erklärungen sind bewusst kurz und praxisnah gehalten.

Nr. Befehl Kurzerklärung 1 ls Listet Dateien und Verzeichnisse auf 2 cd Wechselt das aktuelle Verzeichnis 3 pwd Zeigt das aktuelle Arbeitsverzeichnis 4 cp Kopiert Dateien oder Verzeichnisse 5 mv Verschiebt oder benennt Dateien um 6 rm Löscht Dateien oder Verzeichnisse 7 mkdir Erstellt ein neues Verzeichnis 8 rmdir Löscht ein leeres Verzeichnis 9 touch Erstellt leere Dateien oder ändert Zeitstempel 10 stat Zeigt detaillierte Dateiinformationen 11 file Erkennt den Dateityp 12 chmod Ändert Dateiberechtigungen 13 chown Ändert Dateibesitzer 14 chgrp Ändert die Gruppenzugehörigkeit 15 umask Setzt Standardberechtigungen 16 find Sucht Dateien nach Kriterien 17 locate Schnelle Dateisuche über Index 18 which Zeigt den Pfad eines Befehls 19 whereis Findet Binär-, Quell- und Man-Dateien 20 tree Zeigt Verzeichnisstruktur grafisch 21 cat Gibt Dateiinhalte aus 22 less Blättert durch Textdateien 23 more Einfache Textanzeige seitenweise 24 head Zeigt die ersten Zeilen einer Datei 25 tail Zeigt die letzten Zeilen einer Datei 26 watch Führt Befehle periodisch aus 27 grep Durchsucht Text nach Mustern 28 awk Textverarbeitung und -analyse 29 sed Stream-Editor für Textmanipulation 30 cut Extrahiert Spalten aus Text 31 sort Sortiert Textzeilen 32 uniq Entfernt doppelte Zeilen 33 wc Zählt Zeilen, Wörter, Zeichen 34 diff Vergleicht Dateien 35 patch Wendet Dateiänderungen an 36 tar Archiviert und extrahiert Dateien 37 gzip Komprimiert Dateien 38 gunzip Dekomprimiert gzip-Dateien 39 zip Erstellt ZIP-Archive 40 unzip Entpackt ZIP-Archive 41 df Zeigt Festplattenbelegung 42 du Ermittelt Speicherverbrauch 43 lsblk Listet Blockgeräte 44 mount Bindet Dateisysteme ein 45 umount Hängt Dateisysteme aus 46 blkid Zeigt Blockgeräte-IDs 47 free Zeigt Speicherverbrauch 48 top Echtzeit-Prozessübersicht 49 htop Erweiterte Prozessübersicht 50 ps Zeigt laufende Prozesse 51 uptime Zeigt Laufzeit und Systemlast 52 vmstat Speicher- und Prozessstatistik 53 iostat I/O-Statistiken 54 kill Beendet Prozesse per Signal 55 killall Beendet Prozesse nach Namen 56 nice Startet Prozesse mit Priorität 57 renice Ändert Prozesspriorität 58 systemctl Steuert systemd-Dienste 59 journalctl Zeigt systemd-Logs 60 service Legacy-Dienstverwaltung 61 chkconfig Legacy-Runlevel-Konfiguration 62 crontab Zeitgesteuerte Jobs verwalten 63 at Einmalige zeitgesteuerte Jobs 64 useradd Erstellt Benutzer 65 usermod Ändert Benutzer 66 userdel Löscht Benutzer 67 groupadd Erstellt Gruppen 68 passwd Ändert Benutzerpasswörter 69 id Zeigt Benutzer-IDs 70 login Benutzeranmeldung 71 logout Benutzerabmeldung 72 su Benutzerwechsel 73 sudo Führt Befehle mit Root-Rechten aus 74 hostname Zeigt oder setzt den Hostnamen 75 hostnamectl Verwalten des Systemhostnamens 76 ip Netzwerkinterfaces konfigurieren 77 ss Socket- und Netzwerkstatus 78 ping Prüft Netzwerkerreichbarkeit 79 traceroute Verfolgt Netzwerkpfade 80 nmcli NetworkManager CLI 81 curl Datenübertragung per URL 82 wget Dateien aus dem Netz laden 83 scp Sichere Dateiübertragung 84 rsync Effiziente Dateisynchronisation 85 ftp Klassischer Dateiübertrag 86 sftp Sichere Dateiübertragung 87 ssh Remote-Zugriff auf Systeme 88 exit Beendet Shell oder Sitzung 89 clear Leert das Terminal 90 history Zeigt Befehlsverlauf 91 alias Erstellt Befehlsalias 92 unalias Entfernt Alias 93 env Zeigt Umgebungsvariablen 94 export Setzt Umgebungsvariablen 95 source Lädt Shell-Skripte 96 bash Startet eine Bash-Shell 97 sh Startet eine POSIX-Shell 98 reboot Startet das System neu 99 shutdown Fährt das System kontrolliert herunter 100 poweroff Schaltet das System aus Kurzfassung / Nutzen

Diese Tabelle deckt Dateiverwaltung, Prozesse, Systemdienste, Benutzer, Netzwerk, Storage und Fehleranalyse ab und stellt damit ein kompaktes Nachschlagewerk für Administratoren unter Red Hat Enterprise Linux dar.