По умолчанию в shell команда с > молча перезаписывает файл.
Пример:
echo "This is a sample line" > hello.txt
Файл создастся или будет перезаписан без предупреждения.
Как защититься
Включаем режим защиты от перезаписи:
set -o noclobber
Теперь попытка перезаписать существующий файл через > даст ошибку:
echo "New lines to replace" > hello.txt
# bash: hello.txt: cannot overwrite existing file
То есть shell не даст случайно затереть файл.
А если всё-таки нужно перезаписать
Используется специальный оператор:
echo "New lines to replace" >| hello.txt
>| игнорирует noclobber и осознанно разрешает перезапись.
Вывод
> - опасен, перезаписывает молча
set -o noclobber - защита от случайных потерь
>| - осознанное "да, я точно хочу перезаписать"
Отличная привычка для серверов, продакшена и работы с важными логами.