Wie kann ich die Ausgabe eines Befehls an das Ende einer Textdatei anhängen?
Antworten
Zu viele Anzeigen?Ich verwechsle oft beides. Es ist besser, sich durch ihre Leistung zu erinnern:
> für Overwrite
$ touch someFile.txt
$ echo ">" > someFile.txt
$ cat someFile.txt
>
$ echo ">" > someFile.txt
$ cat someFile.txt
>
>> für Anhängen
$ echo ">" > someFile.txt
$ cat someFile.txt
>
$ echo ">" >> someFile.txt
$ cat someFile.txt
>>
Für die gesamte Frage:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
Dies fügt 720 Zeilen (30*24) in o.txt ein und benennt die Datei anschließend nach dem aktuellen Datum um.
Führen Sie das oben genannte Programm jede Stunde mit dem Cron aus, oder
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
Ich würde printf anstelle von echo verwenden, denn es ist zuverlässiger und verarbeitet Formatierungen wie neue Zeile \n
richtig.
Dieses Beispiel erzeugt eine ähnliche Ausgabe wie echo in den vorherigen Beispielen:
printf "hello world" >> read.txt
cat read.txt
hello world
Wenn Sie jedoch in diesem Beispiel printf durch echo ersetzen würden, würde echo Folgendes behandeln \n als Zeichenkette und ignoriert somit die Absicht
printf "hello\nworld" >> read.txt
cat read.txt
hello
world