Объединение строк, файлов и выходных данных программы в Bash.

Вариант использования, в моем случае, Конкатенация файлов CSS до того, как они будут свернуты. Чтобы объединить два файла CSS:

cat 1.css 2.css > out.css

Чтобы добавить текст в одну единственную позицию, я могу сделать

cat 1.css <<SOMESTUFF 2.css > out.css
This will end in the middle.
SOMESTUFF

Чтобы добавить STDOUT из одной другой программы:

sed 's/foo/bar/g' 3.css | cat 1.css - 2.css > out.css

Пока так хорошо. Но я регулярно сталкиваюсь с ситуациями, когда мне нужно смешать несколькострок, файлов и даже программных выходных данных, таких как заголовки копирайтов, файлы, предварительно обработанные sed(1)и так далее. Я хотел бы объединить их вместе, используя как можно меньше шагов и временных файлов, имея при этом свободу выбора порядка.

Короче говоря, я ищу способ сделать это как можно меньшими шагами в Bash:

command [string|file|output]+ > concatenated
# note the plus ;-) --------^

(В принципе, иметь catдля обработки нескольких STDIN было бы достаточно, я думаю , например

<(echo "FOO") <(sed ...) <(echo "BAR") cat 1.css -echo1- -sed- 2.css -echo2-

Но я не понимаю, как я могу получить к ним доступ.)

18
задан Boldewyn 8 June 2012 в 11:11
поделиться