antares:/media/floppy# 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:
antares:/media/floppy# 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:
antares:/media/floppy# 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):
antares:/media/floppy# 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:
antares:/media/floppy# 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.
antares:/media/floppy# 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.
antares:/media/floppy# 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.
/media/floppy# cd Feierabend 2> Fehler.txt /media/floppy# cat Fehler.txt cd: can't cd to Feierabend
antares:/media/floppy# 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 abzuschliessen, gibt man das Zeichen [Strg] [d] in einer leeren Zeile ein: [Strg] [d] antares:/media/floppy#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.
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
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.
antares:/media/floppy# ls -l | more
Dieser Befehl wir unter Linux 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.
antares:/media/floppy# dmesg | more
Eine ähnliche Funktion wie more hat der Befehl less. Dieser wird wie more mit q beendet.
antares:/media/floppy# 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.
antares:/media/floppy# dmesg | grep "Memory"
Ein weiteres Beispiel:
antares:/media/floppy# ls -l | grep "2003"
Es werden alle Dateien bzw. Verzeichnisse aufgelistet, die 2003 erstellt wurden. Und noch ein Beispiel:
antares:/media/floppy# 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:
antares:/media/floppy# cat /etc/shadow | grep "root" > crypted.passwort.root.txt
Unter Unix sind übrigens mehrere Punkte in Dateienamen erlaubt. Ein Filter zum Sortieren ist der schon erwähnte Befehl sort.
antares:/media/floppy# 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:
antares:/media/floppy# cat /etc/passwd | sort | less
Der Filter wc zählt Zeilen, Wörter (engl. word count) und Zeichen.
antares:/media/floppy# cat /etc/passwd | wc
Befehl <<EndMarke
Der Befehl cat nimmt von der Standardeingabe also solange Zeichen entgegen, also auch Zeilenumbrüche, bis eine definierte EndMarke alleinig in einer Zeile erscheint.
antares:/media/floppy# cat <<EndMarke
>Hallihallo Welt,
>Diese Texteingabe wird
>erst beendet
>wenn das Wort "EndMarke"
>alleine in einer Zeile vorkommt
>EndMarke
antares:/media/floppy#
Elegante Spielerei mit cat & mail:
antares:/media/floppy# cat <<EOT | mail gueltige_email@adresse.de
-s"Hier einen Betreff"
>Hallihallo Welt,
>Diese mail wurde vom System `hostname` versandt
>EOT
antares:/media/floppy#
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.
/media/floppy# 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.
/media/floppy# 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:
/media/floppy# 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.
/media/floppy# 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.txt
/media/floppy# grep "Absturz" glossar.txt ...
Um diese Übung zu beenden heben wir die mount-Zuordnung unserer Arbeitsdiskette auf.
antares:/media/floppy# cd /
antares:/# umount /media/floppy
antares:/#