En bash, un enlace de comando
echo test > actual.txt
reemplazará el contenido del archivo llamado actual.txtcon "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.txthay un enlace a/dir/filedonde/dirhay un archivo de tipo directorio en el que tiene permiso de escritura y búsqueda, pero/dir/fileno existe (y la redirección lo crearía sin un mensaje de error)? ¿Qué pasa si/dir/fileexiste pero no es un archivo normal (dispositivo, quince, directorio ...), o si no tiene permiso de escritura o de búsqueda/dir?