[Zurück] [Home] [Weiter]       http://rowa.giso.de  

Eine frei verwendbare Unix-Grundlagenschulung mit muLinux

Um diese Übung auf unsere Arbeitsdiskette zu speichern, legen wir diese in das Disketten-Laufwerk, mounten das Laufwerk nach /a und wechseln in das Verzeichnis /a.
/# mount /dev/fd0 /a
/# cd /a
/a# _

Ein- und Ausgabeumleitungen, Pipes

In der Regel erfolgt bei allen Dialog-Betriebsystemen die Ausgabe der Kommandos an das Standardausgabegerät (Terminal, Monitor), die Eingabe, falls erforderlich, vom Standardeingabegerät (Tastatur). Fehlermeldungen, die die Ausführung des Kommandos betreffen, werden ebenfalls am Bildschirm angezeigt. Mitunter ist es aber notwendig, Bildschirmausgaben abspeichern zu können.

Ausgabeumleitung    >

Dazu existiert in Unix die Ein-/Ausgabeumlenkung, die auch bei DOS übernommen wurde. Mit den beiden Zeichen < und > kann erreicht werden, daß die Ausgabe eines Kommandos in eine angegebene Datei erfolgt oder Eingabedaten aus einer Datei geholt werden. So bewirkt

/a# ls > Verzeichnis.txt

daß das Inhaltsverzeichnis des aktuellen Verzeichnisses ausgelesen und in die Datei Verzeichnis.txt geschrieben wird. Dabei wird die Datei Verzeichnis.txt angelegt, bevor das Kommando ls ausgeführt wird. Eine eventuell schon vorhandene Datei gleichen Namens wird überschrieben. Wenn das auszuführende Kommando keine Ausgabe erzeugt, weil beispielsweise während der Ausführung ein Fehler aufgetreten ist, so existiert zwar die als Umlenkungsziel angegebene Datei, sie ist dann aber leer!

Wir vergewissern uns ob das alles auch stimmt. Erst wollen wir mit ls sehen ob die Datei auch existiert. Dann schauen wir uns den Inhalt der Datei Verzeichnis.txt an:

/a# cat Verzeichnis.txt

Toll! Auf diese Art und Weise habe ich die meisten Bildschirmausgaben für diese Unix-Schulung erzeugt. Wir probieren gleich noch einen Befehl:

/a# date > Datum.txt

Jetzt haben wir schon zwei Text-Dateien erzeugt. Der Befehl cat hat eine besondere Bedeutung bei den Ein- und Ausgabeumleitungen. Dieser Befehl kann mehrere Dateien verketten (engl. concatenate):

/a# cat Verzeichnis.txt Datum.txt > AllesZusammen.txt

Jetzt haben wir eine dritte Datei, die aber die Inhalte der beiden anderen beherbergt. Und noch eine Variante:

/a# ls > /dev/null

Was ist passiert? Nichts! /dev/null ist der Mülleimer von Unix. Was dort landet ist weg. Wozu soll das aber nützlich sein? Diese Umleitung wird gerne verwendet, um Programme zu testen, d. h. Fehlermeldungen auf den Bildschirm zu bekommen, während die eigentliche Ausgabe ignoriert wird.

Wir können aber Ausgaben auch auf andere Geräte umleiten.

/a# date > /dev/tty3

Um die Wirkung zu sehen drücken wir [Alt] [F3]. Wir wechseln damit zu Konsole 3 (tty3). Dort sehen wir die Ausgabe von date.

Anhängen an eine Datei    >>

Bei der Umleitung in eine Datei wird eine eventuell schon vorhandene Datei gleichen Namens überschrieben. Wenn der Datenstrom aber an die Datei angehangen werden soll, muß anstelle eines zwei Größer-als-Zeichens verwendet werden.

/a# date >> Datum.txt

Hier wird also das aktuelle Datum an die Datei gehangen. Wir können das leicht überprüfen, indem wir diesen Befehl mehrfach aufrufen. Dazu verwenden wir natürlich die Befehlswiederholung (Cursor-nach-oben). Mit diesem Befehl läßt sich eine einfache Log-Datei (Protokoll-Datei) verwalten. Wenn dieser Befehl an in bestimmtes Ereignis geknüpft wird, z. B. die Ausführung eines anderen Befehl, wird diese Aktion mit Uhrzeit protokolliert.

Fehlermeldungen umleiten    2>

Zum Testen von Programmen kann die Protokollierung von Fehlern wichtig sein. Dazu wird eine Zwei und das Größer-Als-Zeichen verwendet. Sehen wir uns dazu ein Beispiel an:

/a# cd Feierabend 2> Fehler.txt
/a# cat Fehler.txt
cd: can't cd to Feierabend

Umleitung der Tastatureingaben in eine Datei

Wir wollen eine Datei erstellen, die direkt mit den auf der Tastatur eingetippten Zeichen gefüllt wird. Diese Befehlsvariante stellt einen einfachen Texteditor dar. In der Tat wurde früher, als kaum Texteditoren unter Unix zur Verfügung standen, diese Methode zur Erzeugung von Textdateien verwendet.

/a# cat > Textdatei01.txt
Alle Zeilen, die Sie eintippen
werden in die Datei Textdatei01.txt geschrieben.
So auch dieser Text.
Eine neue Zeile wird durch die [Enter]-Taste erzeugt.
Um den Text abzuschließen,
gibt man das Zeichen [Strg] [d] in einer leeren Zeile ein:
[Strg] [d]
/a# _
Mit dem Befehl  ls  sehen wir, ob diese Datei wirklich erzeugt wurde. Mit  cat Textdatei01.txt  bzw.  less Textdatei01.txt  können wir den Inhalt kontrollieren.

Eingabeumleitung    <

Wenn wir den Inhalt einer Datei in die Standardeingabe eines Befehls umleiten wollen, verwenden wir folgende Syntax:

Befehl < Dateiename

Der Befehl sort erstellt eine sortierte Ausgabe. Wir können ihm die Datei /etc/passwd zuleiten, um eine sortierte Ausgabe dieser Date zu erreichen:

sort < /etc/passwd

Pipes    |

Was ist ein pipe? Auch wenn die Köpfe manchmal unter Unix rauchen, die pipe hat nichts mit einer Tabakpfeife zu tun. Die pipe ist hier eher als Pipeline zu verstehen. Man kann Kommandos mit dem Pipezeichen | verbinden, wobei jeweils die Ausgabe des vorherigen Befehls als Eingabe für den nächsten Befehl dient. Das Pipezeichen wird mit der [AltGr]-Taste (rechts neben der langen Leertaste) und der Taste mit den Zeichen < und > erzeugt.

Befehl1 | Befehl2

Allerdings muß der nachfolgende Befehl auch etwas mit diesen Datenstrom anfangen können. Das sind meist Befehle, die wie Filter wirken. Ein solcher Filter ist more, der eine bequeme bildschirmweise Auflistung der Daten ermöglicht.

/a# ls -l | more

Dieser Befehl wir unter muLinux mit q beendet. Also immer wenn man eine längere Ausgabe erwartet, kann man more einsetzen. So z. B. auch bei dmesg. dmesg gibt die Kernelmeldungen aus. Das sind Informationen über die verwendete Hardware. Da die Ausgabe sehr umfangreich ist, kann mit more eine komfortablere Darstellung erreicht werden.

/a# dmesg | more

Eine ähnliche Funktion wie more hat der Befehl less. Dieser wird wie more mit q beendet.

/a# dmesg | less

Ein sehr oft verwendetet Befehl ist grep. grep sucht im Datenstrom alle Zeilen, die eine bestimmte Zeichenkette beinhalten und gibt dann diese Zeilen aus. Wir wollen uns nur über den Arbeitsspeicher informieren, filtern wir die Zeilen aus, die das Wort "Memory" (engl. für Speicher) beinhalten.

/a# dmesg | grep "Memory"

Ein weiteres Beispiel:

/a# ls -l | grep "1999"

Es werden alle Dateien bzw. Verzeichnisse aufgelistet, die 1999 erstellt wurden. Und noch ein Beispiel:

/a# cat /etc/passwd | grep "root"

Es werden alle Zeilen aufgelistet, die das Wort "root" beinhalten. Natürlich kann dieser Datenstrom auch wieder umgeleitet werden. So z. B. in eine Datei:

/a# cat /etc/passwd | grep "root" > Paßwort.root.txt

Unter Unix sind übrigens mehrere Punkte in Dateienamen erlaubt. Ein Filter zum Sortieren ist der schon erwähnte Befehl sort.

/a# cat /etc/passwd | sort

Es werden alle Zeilen nach dem ersten Buchstaben sortiert. Ist die Datei /etc/passwd sehr groß empfiehlt sich wieder der Einsatz von less oder more:

/a# cat /etc/passwd | sort | less

Der Filter wc zählt Zeilen, Wörter (engl. word count) und Zeichen.

/a# cat /etc/passwd | wc

Beispiel: Wörterbücher

Es läßt sich mit diesen Befehlen und einer Textdatei, in der pro Zeile ein Wort mit seiner deutschen Entsprechung steht, ein Wörterbuch zum Nachschlagen realisieren. Das hier downloadbare Wörterbuch Englisch-Deutsch ist sehr umfangreich (3297 kByte). Ich habe es daher komprimiert (siehe Kapitel "Archivieren / Komprimieren"): ger-eng.zip (973 kByte). Leider passt es nach dem Entpacken auf keine Diskette mehr. Es kann nur mit einer Festplatte verwendet werden.

Zum Üben habe ich daher ein kleines Wörterbuch der sehr leicht zu lernenden Kunstsprache Esperanto ebenfalls zum Download bereitgestellt: esperanto-deutsch.txt Diese Datei kann auch mit dem elektronischen Wörterbuch "ding" verwendet werden. "ding" ist Bestandteil vieler Linux-Distributionen und verwendet auch den grep-Befehl.

Zum Nachschlagen kann der Befehl grep verwendet werden. Wir wollen wissen was "Computer" aus Esperanto heisst.

/a# grep Computer esperanto-deutsch.txt
komputilo :: Computer
komputilreto :: Computernetz
tajpi :: tippen (mit Schreibmaschine o. Computer)
...

Es werden alle Zeilen mit dem Wort Computer ausgegeben. In Esperanto haben alle Substantive die Endung "-o". Alles weibliche bekommt ein "-in-" vor dem "-o" Wir wollen nach weiblichen Substantiven suchen. Um ein nachfolgendes Leerzeichen einzuschließen, schliessen wir alles in Anführungszeichen ein.

/a# grep "ino " esperanto-deutsch.txt
...

Alle Adjektive haben die Endung "-a". Das sind sehr viele. Wir können z. B. alle Adjektive in eine andere Datei schreiben:

/a# grep "a ::" esperanto-deutsch.txt > esperanto-adjektive.txt

Das gleiche können wir mit den Verben tun. Die haben im Invinitiv die Eindung "-i" Im Esperanto können neue Wörter durch hinzufügen von Silben an den Wortstamm gebildet werden. So braucht man nur relativ wenig Vokabeln zu lernen. Wir haben schon -in-, -o, -a und -i kennengelernt. Folgender Befehl zeigt uns alle diese Silben an.

/a# grep "FIX " esperanto-deutsch.txt

So, das war ein kurzer Ausflug in die sehr logisch aufgebaute Sprache Esperanto. Esperanto ist gewissermassen der "missing link" zwischen den natürlichen und den Programmiersprachen.   Esperanto wird tatsächlich als Zwischensprache für Übersetzungsprogramme verwendet (http://www.dictionaries.travlang.com). Außerdem klingt diese Sprache sehr schön.

Beispiel: Glossar

Es läßt sich auch ein Glossar leicht durchsuchen, wenn jeder Begriff und die entsprechende Erklärung auf einer Zeile steht.

Beispiel: glossar.txt

/a# grep "Absturz" glossar.txt
...

Um diese Übung zu beenden heben wir die mount-Zuordnung unserer Arbeitsdiskette auf.
/a# cd /
/# umount /a
/# _

[Zurück] [Home] [Weiter]