rm yourfile 2>/dev/null || touch yourfile
Если файл существовал раньше, rm
завершится успешно и сотрет файл, а touch
не будет выполнен. После этого у вас не будет файла.
Если файл не существовал раньше, rm
завершится ошибкой (но сообщение об ошибке не отображается, так как оно направлено в битовый пакет), и из-за отсутствия -Нулевой код выхода rm
, будет выполнен touch
. После этого вы получите пустой файл.
Предостережение: если файл существует, но у вас нет прав на его удаление, вы не заметите эту ошибку из-за перенаправление stderr. Следовательно, для отладки и более поздней диагностики может быть лучше вместо этого перенаправить stderr в какой-либо файл.