Der Anwendungsfall ist in meinem Fall CSS-Dateiverkettung, bevor sie minimiert wird. Um concat zwei CSS-Dateien:Verketten von Strings, Dateien und Programmausgaben in Bash
cat 1.css 2.css > out.css
Um einen Text in einer einzigen Position hinzufügen, kann ich
cat 1.css <<SOMESTUFF 2.css > out.css
This will end in the middle.
SOMESTUFF
zu STDOUT von ein anderes Programm hinzufügen:
sed 's/foo/bar/g' 3.css | cat 1.css - 2.css > out.css
So weit so gut. Aber ich komme regelmäßig in Situationen, in denen ich mehrere Strings, Dateien und sogar Programmausgabe zusammen mischen muss, wie Copyright-Header, Dateien vorverarbeitet von sed(1)
und so weiter. Ich möchte sie in möglichst kleinen Schritten und temporären Dateien zusammenfügen und gleichzeitig die Freiheit haben, den Auftrag zu wählen.
Kurz gesagt, ich bin nach einem Weg, dies in so wenig Schritten wie möglich in Bash zu tun:
command [string|file|output]+ > concatenated
# note the plus ;-) --------^
(Im Grunde genommen ein cat
mit mehreren STDINs zu handhaben würde ausreichen, ich denke, wie
<(echo "FOO") <(sed ...) <(echo "BAR") cat 1.css -echo1- -sed- 2.css -echo2-
Aber ich scheitern zu sehen, wie ich auf diese zugreifen)
D'oh! Das ist die einfachste Lösung (in meinem Fall), also werde ich das akzeptieren. – Boldewyn
Natürlich muss @Boldewyn '> concatenated.css' oder' | hinzugefügt haben Compiler 'am Ende für sein Problem wie folgt zu arbeiten:' cat file1.css <(echo "FOO") <(Befehl [Zeichenfolge | Datei | Ausgabe]) file2.css <(Echo "BAR")> verkettet ' – hobs