echo >> Stil Anhängen, sondern an den Anfang einer Datei
Gibt es keinen schönen trick in der UNIX-shell append-Zeilen an den Anfang der Datei? E. g. ähnlich
echo "Foobar" >> file.txt
... aber anstatt neue Linien würden voranstellen bestehende?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In 2 Schritten:
cat
:content="$(<file.txt)"
<file.txt
sollte das erzeugt keine Ausgabe. Interessant, dass<file.txt
erzeugt eine Ausgabe, die in der zsh, aber nicht in der bash.<file.txt
produziert keine Ausgabe nach sich.$(<file.txt)
ist eine Besondere form, die nicht regulären Substitutionen; beachten Sie insbesondere, dass`<file.txt`
nicht tun.<(...)
ist Prozess-substitution.$(<...)
ist der Datei-Inhalt-substitution.Dies ist flippig, aber wenn Sie Ihre sed unterstützt -ich, die Sie tun können:
1i Foobar
funktionieren sollte.Ich würde es einfach halten. Die einfachste und wohl Schnellste Lösung ist einfach:
Wenn es egal ist, dass file.txt's inode ändert, ersetzen Sie das "cp" durch "mv". Eine Lösung, die deutlich schneller als dies nicht möglich ist, da Unix-Dateisystem-Semantik nicht unterstützen voranstellen, um eine Datei nur Anhängen.
mv tmpfile.txt file.txt
?file.txt
's inode ändert, ersetzen Sie das "cp" durch "mv"'tail
hat die-F
option für die Datei, selbst wenn der inode ändert. Natürlich, einmv
sich nicht um das umschreiben der Dateien Inhalt, so dass, wenn die Datei sehr groß ist, mitmv
stattcp
wird nicht die Hälfte der I/O.