Un amigo mío señala que si haces:
perl -pi.bak -e 's/foo/bar/' somefile
cuando "somefile" es en realidad un enlace simbólico, perl hace exactamente lo que dicen los documentos:
Para ello, renombra el archivo de entrada, abre el archivo de salida con el nombre original y selecciona ese archivo de salida como predeterminado para las declaraciones print (). La extensión, si se proporciona, se utiliza para modificar el nombre del archivo antiguo para hacer una copia de seguridad [...]
Lo que da como resultado un nuevo enlace simbólico "somefile.bak" que apunta al archivo real sin cambios, y un nuevo archivo regular "somefile" con los cambios.
En muchos casos, seguir el enlace simbólico sería el comportamiento deseado (incluso si deja ambigua la ubicación correcta del archivo .bak). ¿Hay una manera simple de hacer esto que no sea probar los enlaces simbólicos en un contenedor y manejar el caso adecuadamente?
( sed
hace lo mismo, por lo que vale).
-p -i
en tu guión.