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
/#
Robert.Warnke@giso.de (copyleft) Robert Warnke, Berlin (Germany) | http://rowa.giso.de
|