En bash, un enlace de comando
echo test > actual.txt
reemplazará el contenido del archivo llamado actual.txt
con "prueba" y creará el archivo si no existe. Sin embargo, si el archivo existe, bash simplemente lo abrirá, truncará y escribirá los nuevos contenidos en el archivo.
Específicamente, el comando de redireccionamiento falla en este escenario:
ln -s /some/illegal/path link.txt
echo test > link.txt
Bash 4.4.12 me da el mensaje de error confuso link.txt: No such file or directory
.
Una forma de evitar esto es asegurarse de eliminar el archivo antes de ejecutar el comando redirigido.
rm link.txt && echo test > link.txt
Sin embargo, me preguntaba si había algún ajuste de las opciones de bash o el operador de redireccionamiento que evitará este modo de falla. ¿Algunas ideas?
link.txt
hay un enlace a/dir/file
donde/dir
hay un archivo de tipo directorio en el que tiene permiso de escritura y búsqueda, pero/dir/file
no existe (y la redirección lo crearía sin un mensaje de error)? ¿Qué pasa si/dir/file
existe pero no es un archivo normal (dispositivo, quince, directorio ...), o si no tiene permiso de escritura o de búsqueda/dir
?