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.
Permitesed -i filename -e "expression" AnotherFileName
que es una versión camuflada involuntariamente desed -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.