Saltar al contenido

Sed da: sed: no se puede leer: No existe tal archivo o directorio

Si te encuentras con alguna parte que no entiendes puedes comentarlo y haremos todo lo necesario de ayudarte tan rápido como podamos.

Solución:

(Compilando una respuesta de los comentarios, el conocimiento es de melpomene y AlexP.)

Qué es eso '' después sed -i?

-i significa en el lugar, es decir, editar en el archivo directamente.
-i '' significa editar en su lugar un archivo cuyo nombre es el vacío string.
Dado que probablemente no haya ningún archivo cuyo nombre sea el vacío stringsed se queja de que no puede leerlo.

Nota 1 dependencia de la plataforma:
la sintaxis de -i es una diferencia entre GNU sed y sed de mac os.

Nota 2 orden “usual” de argumentos:
los -e cambie para indicar que el código sed permite tenerlo entre los nombres de los archivos.
Esta es una trampa (en la que, por ejemplo, quedé atrapado vergonzosamente), al hacer que tropieces con tus expectativas de lo que encuentras en una línea de comando sed.
Permite
sed -i filename -e "expression" AnotherFileName

que es una versión camuflada involuntariamente de
sed -i'NoExtensionGiven' "expression" filename AnotherFileName.

Para soporte tanto en OSX como en Linux, utilizo una simple verificación if para ver si el script bash se está ejecutando en OSX o Linux, y ajusto el comando -i argumento basado en eso.

if [[ "$OSTYPE" == "darwin"* ]]; then
  sed -i '' -e 's|$iconPath|images-theme-dark/$iconfile|g' ""
else
  sed -i -e 's|$iconPath|images-theme-dark/$iconfile|g' ""
fi

Más adelante puedes encontrar las referencias de otros sys admins, tú también eres capaz insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *