Одно решение проблемы из добавить к файлу одну оболочку liner?:
cat header main | tee main > /dev/null
Как заметили некоторые из комментариев, это не работает для больших файлов.
Вот пример, где он работает:
$ echo '1' > h
$ echo '2' > t
$ cat h t | tee t > /dev/null
$ cat t
1
2
И где он ломается:
$ head -1000 /dev/urandom > h
$ head -1000 /dev/urandom > t
$ cat h t | tee t > /dev/null
^C
Команда зависает, и после ее уничтожения мы остаемся с:
$ wc -l t
7470174 t
Что вызывает описанное выше поведение, когда команда застревает и добавляет строки бесконечно? Что отличается в сценарии с 1 строкой?