Alles anzeigenprintf "Das is ungefähr $(date -u)\n__________________________\n" >> $1
Diese Anweisung liest sich:
Gebe schön formatiert ( printf == print formatted) zuerst die Zeichenkette "Das is ungefähr " aus.
Ersetze aber vorher das $(date -u ) mit der Ausgabe des Befehls "date -u" (was Datum und Zeit in UTC ausgibt).
Und hinterher eine neue Zeile \n
gefolgt von vielen Unterstrichen und noch einer neuen Zeile \n
>> ABER HÄNGE diese Ausgabe an die Datei an, die du mir als erstes Argument beim Aufruf mitgebeben hast.
(Wir erinnern uns: stampit /Pfad/wohin)
Die Ausgabeumlenkung ">>" bewirkt ein Anhängen (oder erstellen) einer Datei.
Ein einfaches '">" würde die Datei erstellen oder überschreiben. (Löschen und neu erstellen - technisch gesehen).
Es ist ein fundamentales Konzept der *nix Shells, dass Befehle auf vielfältige Art und Weise umgelenkt und/oder verkettet werden (können).
Da muss ich Dich auch mal berichtigen ![]()
Das Date Kommando wird umgewandelt in einen Datums-String, weil es in doppelten Anführungszeichen steht, das würde mit echo genauso gehen. Ohne Prozent Platzhalter ist printf oder sprintf recht witzlos und wahrscheinlich auch langsamer in der Ausführung. printf bzw. sprintf sind C Funktionen. %s steht für "setze an der Stelle einen String" also der Reihenfolge nach, wie man die Parameter nach den zu ersetzenden String angibt.
Normalerweise kann man in PHP & Co., also Skript- oder Programmiersprachen, die die C Funktionen schlicht durchreichen auch sowas machen, um die Parameter beliebig oft benutzen zu können, aber das klappte irgendwie in der Bash nicht:
printf "Aepfel sind %1$s, Birnen sind auch %1$s. Aber Spinat zaehlt zum %2$s und nicht zum %1$s\n" "Fruechte" "Gemuese"
Mit z. B. %d kann man Zahlen formatiert ausgeben, also beispielsweise X Nullen voranstellen um alle Zahlen auf die gleiche Länge zu bringen; oder eine Nachkommastellen Präzision einstellen. Dazu am besten mal die man Page konsolidieren, den genauen Syntax muss ich auch jedes mal nachsehen.
Die Pipe Funktionen (oder wie man das nennen soll) >> und > sind C's STDOUT und haben per se nichts mit Unix zu tun, das geht auch in Windows. Aber ja, C wurde ursprünglich von der NASA für Unix entwickelt.