Schnell mal die Shell

Dr. Linux

01.07.2001
Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux: beobachtet die Patienten in den Linux-News-Gruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.

Terminal-Sitzung reproduzieren

Bei längeren Sitzungen an einer (Text-) Konsole würde ich gern frühere Eingaben nachlesen; insbesondere wenn umfangreiche Arbeiten stattgefunden haben. Wie lässt sich das machen?

Dr. Linux: Wenn Sie mit der Tastenkombination [Shift]+[Bild hoch] bzw. [Shift]+[Bild runter] zum "Blättern" nicht auskommen, können Sie ein Sitzungsprotokoll mit dem Kommando

user$ script Name_der_Protokolldatei

anfertigen lassen. Verwenden Sie den script-Befehl ohne Angabe einer Datei, wird automatisch ein Protokoll mit dem Namen typescript im aktuellen Arbeitsverzeichnis erstellt.

script läuft im Hintergrund und lässt sich mit der Tastenkombination [Strg+D] wieder beenden.

Viele Textkonsolen liefern eine Farbdarstellung, die durch sogenannte Escape-Sequenzen (siehe den gleichnamigen Kasten) gesteuert wird. Diese hält script in der Protokoll-Datei ebenfalls fest, so dass in der Reproduktion z. B. auch farbige Listings korrekt dargestellt werden.

Escape-Sequenzen

Das American National Standards Institute (ANSI) machte sich u. a. auch die Normierung der Terminalsteuerzeichen zur Aufgabe. Praktisch umgesetzt wird dies mit Escape-Sequenzen, von denen in diesem Artikel mehrfach die Rede ist, und die Sie ausführlich im Bash-Prompt-HOWTO (z. B. http://www.linux.com/howto/Bash-Prompt-HOWTO-6.html) beschrieben finden.

Einige dieser Steuerzeichen kennen Sie schon; so ist das bekannte "Beep", das Ihr System gelegentlich von sich gibt, ebenfalls eine Escape-Sequenz: Auf einer Kommandozeile abgesetzt lässt die Tastenkombination [Strg+G] Ihren Rechner piepsen (sofern Ihr Distributor oder Sie Ihr System nicht auf "sprachlos" konfiguriert haben).

Noch "multimedialer" können Sie derartige Zeichen zur Farbsteuerung einsetzen, z. B. für farbige Ausgaben im Textmodus oder zur farbigen Gestaltung des Prompts. Das HOWTO bietet einige Beispiele, die zum Probieren einladen, als vorgefertigte Skripte an. In eine Datei kopiert und ausführbar gemacht können Sie z. B. das Farbschema auf Ihrer Kommandozeile betrachten. Das folgende Skript aus dem HOWTO demonstriert die möglichen Farben (Abbildung 1):

 #!/bin/bash
 #
 # Diese Datei gibt eine Reihe von Farbcodes
 # auf dem Terminal aus.
 # Jeder echo-Aufruf druckt eine Vordergrundfarbe auf
 # grauem und schwarzem Hintergrund aus und schreibt
 # den Code für die Vordergrundfarbe in die Zeilenmitte.
 # Dieses Skript wurde mit weißen, schwarzen und grünen
 # Terminalhintergründen getestet (2. Dezember 98).
 #
 echo "Auf Hellgrau:            Auf Schwarz:"
 echo -e "\033[47m\033[1;37m   Weiss      \033[0m\
  1;37m \
 \033[40m\033[1;37m   Weiss      \033[0m"
 echo -e "\033[47m\033[37m   Hellgrau   \033[0m\
    37m \
 \033[40m\033[37m   Hellgrau   \033[0m"
 echo -e "\033[47m\033[1;30m   Grau       \033[0m\
  1;30m \
 \033[40m\033[1;30m   Grau       \033[0m"
 echo -e "\033[47m\033[30m   Schwarz    \033[0m\
    30m \
 \033[40m\033[30m   Schwarz    \033[0m"
 echo -e "\033[47m\033[31m   Rot        \033[0m\
    31m \
 \033[40m\033[31m   Rot        \033[0m"
 echo -e "\033[47m\033[1;31m   Hellrot    \033[0m\
  1;31m \
 \033[40m\033[1;31m   Hellrot    \033[0m"
 echo -e "\033[47m\033[32m   Grün       \033[0m\
    32m \
 \033[40m\033[32m   Grün       \033[0m"
 echo -e "\033[47m\033[1;32m   Hellgrün   \033[0m\
  1;32m \
 \033[40m\033[1;32m   Hellgrün   \033[0m"
 echo -e "\033[47m\033[33m   Braun      \033[0m\
    33m \
 \033[40m\033[33m   Braun      \033[0m"
 echo -e "\033[47m\033[1;33m   Gelb       \033[0m\
  1;33m \
 \033[40m\033[1;33m   Gelb       \033[0m"
 echo -e "\033[47m\033[34m   Blau       \033[0m\
    34m \
 \033[40m\033[34m   Blau       \033[0m"
 echo -e "\033[47m\033[1;34m   Hellbau    \033[0m\
  1;34m \
 \033[40m\033[1;34m   Hellblau   \033[0m"
 echo -e "\033[47m\033[35m   Purpur     \033[0m\
    35m \
 \033[40m\033[35m   Purpur     \033[0m"
 echo -e "\033[47m\033[1;35m   Rosa       \033[0m\
  1;35m \
 \033[40m\033[1;35m   Rosa       \033[0m"
 echo -e "\033[47m\033[36m   Cyan       \033[0m\
    36m \
 \033[40m\033[36m   Cyan       \033[0m"
 echo -e "\033[47m\033[1;36m   Hellcyan   \033[0m\
  1;36m \
 \033[40m\033[1;36m   Hellcyan   \033[0m"

\033 steht dabei für das Zeichen, das ein Druck auf die ESCape-Taste erzeugt, daher der Name Escape-Sequenzen. Die 33 im oktalen Zahlensystem entspricht dem ASCII-Code für das Escape-Zeichen (27 dezimal).

Die Shell

Ein Kommandointerpreter. Dieses Programm wird z. B. bei der Anmeldung am System gestartet (Login-Shell) und nimmt die vom Benutzer eingegebenen Kommandos entgegen (interaktive Shell). Shells haben in der Regel Programmiersprachenelemente (Variablen, Schleifen, konditionale Abfragen etc.) eingebaut, sodass man Anweisungen zu sogenannten Shell-Programmen alias Shell-Skripten zusammenstellen und ausführen lassen kann. Neben der bash, die von der überwiegenden Anzahl der Linuxuser genutzt wird, stehen unter Linux und anderen Unixbetriebssystemen z. B. folgende Shells zur Auswahl:

  • Die Syntax der csh oder C-Shell ähnelt der Programmiersprache C.
  • Die tcsh ist eine erweiterte C-Shell mit der Möglichkeit, die Befehlszeile zu editieren.
  • Die sh oder Bourne-Shell hat keine editierbare Befehlszeile.
  • Die zur Bourne-Shell weitgehend abwärtskompatible ksh oder Korn-Shell stellt eine editierbare Kommandozeile bereit.
  • Die zsh (Z-Shell) ist die jüngste unter den aufgeführten Shells und ebenfalls editierbar. Obwohl sie weitgehend der ksh ähnelt, besitzt sie einige Besonderheiten und weitergehende Features.
Abbildung 1: Escape-Sequenzen für Farben

Beginnen Sie mit dem Aufzeichnen des Protokolls in Ihrem Home-Verzeichnis, denn zum Erstellen der Protokolldatei benötigt script Ihre Schreibberechtigung für das aktuelle Verzeichnis.

Mit

user$ cat Dateiname_des_Protokolls

lässt sich das Protokoll von einer Kommandozeile aus reproduzieren; bei längeren Protokollen bietet sich eine seitenweise Anzeige mit more statt cat an, oder Sie rufen das Protokoll in einem X-Terminalprogramm auf, das einen Scrollbalken zur Verfügung stellt.

Abbildung 2: Reproduzieren einer Sitzung im Text-Modus mit script

Persönliche Begrüßung

Lässt sich die Login-Meldung, beispielsweise

Red Hat Linux release 7.0 (Guinness)
 Kernel 2.2.16-22 on an i586

individuell gestalten?

Dr. Linux: Die Distributionen geben vor dem Login Meldungen aus, deren Inhalt in der Datei /etc/issue gespeichert ist. Der Superuser kann diese Datei editieren und damit die Ausgabe vor dem Login verändern.

Wenn Sie die Datei mit einem Editor öffen, werden Sie eventuell feststellen, dass dieser Begrüßungstext nicht nur aus Text, sondern auch aus Steuerzeichen besteht. So finden Sie bei SuSE z. B. folgenden Eintrag:

Welcome to SuSE Linux 7.1 (i386) - Kernel \r (\l).

Debian gibt sich mit

Debian GNU/\s 2.1 \n \l

etwas spartanischer, und Mandrake zeichnet mit einem Haufen Escape-Sequenzen gar einen kompletten Pinguin:

^[[40m^[[40m
 ^[[2J^[[0;0H
 ^[[0;1;30;44m    ^[[40m   ^[[44m   ^[[40m[…]
 ^[[0m^[[255D
 Linux Mandrake release 7.0 (Air)
 Kernel 2.2.18 on an i686 / \l

Mit den Steuerzeichen hat es dabei folgende Bewandtnis:

  • \l erzeugt in der Ausgabe die Nummer der Textkonsole (tty1, tty2, …).
  • \t gibt die Uhrzeit im Format HH:MM:SS aus.
  • \m gibt den Prozessortyp (z. B. i586) an.
  • \r gibt die Kernelnummer aus.
  • \d setzt das Datum im Format 2001-06-13 ein.
  • \n ist das Steuerzeichen, das durch den Rechnernamen ersetzt wird. Wenn Sie den Eintrag
Willkommen - dies ist Kernel \r.
 Es ist \t.
 \l ist bereit zum Login.

in Ihrer /etc/issue ablegen, sieht die Login-Meldung dann so aus:

Willkommen - dies ist Kernel 2.2.18.
 Es ist 20:40:22.
 tty2 ist bereit zum Login.

Will man wie bei der Mandrake-Willkommensmeldung zusätzlich mit Farben arbeiten, kann man auf die im Kasten Escape-Sequenzen beschriebenen Steuerzeichen zurück greifen. Allerdings schreibt man das Escape-Zeichen jetzt nicht mehr als \033, sondern als [Strg+V], gefolgt von einem Druck auf die [Esc]-Taste. Zu sehen bekommt man dann ein ^[ in der Datei.

^[[47m^[[31m Willkommen - dies ist ^[[40m Kernel \r.^[[0
 Es ist \t.
 \l ist bereit zum Login.

sorgt dafür, dass Willkommen - dies ist als rote Schrift auf grauem Untergrund erscheint. Die Kernelangabe wird Rot auf Schwarz ausgegeben, und mit Strg+V, [0 wird wieder die originale Farbgebung eingeschaltet.

Möchten Sie auch die Login-Meldung verändern, die Benutzer angezeigt bekommen, die sich per Telnet auf Ihrem Rechner einloggen, dann editieren Sie die Datei /etc/issue.net auf gleiche Weise.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Ein neuer Anstrich
    Jetzt ist Schluss mit dem grauen Shell-Alltag – renovieren Sie die Konsole und verpassen Sie ihr mit ANSI-Escape-Sequenzen einen neuen Look.
  • Bash-Konfiguration, die zweite
    In diesem zweiten Teil der Serie über die Konfiguration der Bash wird es noch einmal praktisch: Das Einstellen des Prompts, und die für die Fehlersuche so nützlichen Tracing-Modi werden beschrieben.
  • Textfenster einstellen mit Xtermcontrol
    X-Terminals lassen sich auf vielfältige Weise einstellen. Die Software xtermcontrol hilft dabei, ohne dass sich der Anwender die sonst nötigen Spezialzeichen merken muss.
  • Farbige Shell-Prompts und "ls"-Ausgaben
    Die Bash lässt sich in vielfältiger Weise konfigurieren und den persönlichen Vorlieben anpassen. Ein individueller Prompt kann die Übersichtlichkeit fördern, und auch die Ausgabe von "ls" wird mit Farben lesbarer.
  • Zu Befehl: date & cal
    Die Kommandozeilen-Tools cal und date erzeugen Kalender und bearbeiten Datum und Uhrzeit. Wenn man sie geschickt einsetzt, kann man daraus zum Beispiel eine kleine Geburtstagsverwaltung machen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...