In Unix-artigen Betriebssystemen
Es ist unerlässlich, dass du ein solches System zur Verfügung hast.
Eine bloße Beschreibung der sichtbaren Auswirkungen auf Shell-Ebene oder der grundsätzlichen Funktionsweise der Umlenkungen reicht nicht aus.
Das sollte dich nicht davon abhalten, die Befehle auch tatsächlich auszuführen.
LC_TIME=de_DE.utf8 date +\%A >heute
Ein Ausdruck der Form
a=b c
- legt die Umgebungsvariable a an
- weißt ihr den Wert b zu
- führt das Programm c aus.
Ein Ausdruck der Form
a > b
führt das Programm a aus und schreibt das, was das Programm in die Standardausgabe schreibt, in die Datei b. Die Datei b wird dabei vorher geleert. Im Gegensatz dazu wird bei
a >> b
die Datei vorher nicht geleert.
Falls du nicht weißt, wie das Programm date funktioniert, kannst du das durch Eingabe von
man date
herausfinden. Ähnliches gilt für die Programme printf, cat, tr, tee, sort, cut, paste, bc und weitere.
Ein Ausdruck der Form
a < b
startet das Programm a und schreibt den Inhalt der der Datei b in die Standardeingabe von a.
Ein Ausdruck der Form
a | b
startet die Programme a und b und schreibt die Standardausgabe von a in die Standardeingabe von b.
Ein Ausdruck der Form
a n>b
startet das Programm a und schreibt das was a in die Datei Nummer n schreibt stattdessen in die Datei b. Innerhalb von Programmen wird jede geöffnete Datei anhand einer Nummer identifiziert, dem sogenannten file descriptor. Bei Programmstart sind die Nummern 0, 1 und 2 schon vergeben, nämlich für Standardeingabe, Standardausgabe bzw. Fehler. Fehler in der while-Schleife werden also nach /dev/null ausgegeben. /dev/null ist eine Datei, die immer leer ist. Wenn du aus ihr liest, dann kommt nichts; wenn du in sie schreibst, dann sind die Daten weg.
Führe die genannten Befehle aus . Beschreibe warum wann welche Datei erzeugt wird und warum sie welchen Inhalt hat. Sag bescheid wenn du auf die Begründung nicht kommst.