В bash, командная ссылка
echo test > actual.txt
заменит содержимое файла с именем actual.txt
«test» и создаст файл, если он не существует. Однако, если файл существует, bash просто откроет его, урежет и запишет новое содержимое в файл.
В частности, команда redirect терпит неудачу в этом сценарии:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12 выдает мне запутанное сообщение об ошибке link.txt: No such file or directory
.
Один из способов избежать этого - обязательно удалить файл перед запуском перенаправленной команды.
rm link.txt && echo test > link.txt
Мне было интересно, хотя, был ли некоторый трюк опций bash или оператора перенаправления, который предотвратит этот режим сбоя. Любые идеи?
link.txt
это ссылка на файл/dir/file
где/dir
находится директория типа, для которой у вас есть разрешение на запись и поиск, но/dir/file
она не существует (и перенаправление создаст ее без сообщения об ошибке)? А что если/dir/file
существует, но не является обычным файлом (устройство, fifo, каталог ...), или у вас нет разрешения на запись в него или разрешения на поиск/dir
?