Давно мучаюсь вопросом, существует ли какой-либо способ перенаправления вывода в начало файла в BASH (без потери содержимого)?
К примеруcat >> "/user/file.conf" <<EOF
новый текст в начало файла
EOFКак можно изменить так, чтобы вставка произошла в начало файла?
Спасибо.
Это элементарно, достаточно применить мозг. Создаем временный файл в него направляем вывод, по окончанию добавляем в него содержимое требуемого файла и переименовываем.
>Это элементарно, достаточно применить мозг. Создаем временный файл в него направляем вывод,
>по окончанию добавляем в него содержимое требуемого файла и переименовываем.Еще добавлю:
Все бы ничего, но если файл заголовок которого надо поменять очень большой, гигабайты там какие-нить, то будет больно гонять большие объемы. Если перезаписываемая инфа не предполагает сдвига, т.е. файл в итоге не должен увеличиться/уменьшиться в размере, то можно попробовать использовать такую конструкцию:
echo "oldheader+body" >file.txt ## создали файл
echo -n "newheader" 1<>file.txt ## переписали только заголовок (операция [n]<>word)Я такой конструкцией никогда не пользовался и не знаю степень ее портируемости и т.п.
echo new_header | dd of=file conv=notrunc