Cómo convertir una ruta de Windows (con barras invertidas) al formato Unix en Babun / Cygwin

8

Estoy usando Windows y escribiendo scripts de shell para ejecutar en Babun (una API POSIX).

Necesito leer una ruta desde una variable de entorno, $ USERPROFILE, y convertirla a estilo unix (reemplazar \ por /, c: \ por / c /) para poder usarla más adelante en el script.

El problema es que cada vez que hago eco del contenido de $ USERPROFILE, las barras invertidas se interpretan como caracteres de escape y obtengo un resultado inesperado (las letras "al azar" se convierten en caracteres especiales como \ n, \ f, etc.). Así que no puedo repetirlo en sed, por ejemplo.

Vituel
fuente

Respuestas:

11

Cygwin proporciona la utilidad muy útil cygpathpara convertir rutas de formato de Unix y Windows. De la Guía del usuario de Cygwin

El cygpathprograma es una utilidad que convierte los nombres de archivos nativos de Windows en nombres de ruta de estilo POSIX de Cygwin y viceversa. Se puede usar cuando un programa Cygwin necesita pasar un nombre de archivo a un programa nativo de Windows, o espera obtener un nombre de archivo de un programa nativo de Windows. Alternativamente, cygpathpuede generar información sobre la ubicación de directorios importantes del sistema en cualquier formato.

Se puede convertir a / desde Windows o rutas de formato de estilo DOS, por ejemplo, para imprimir el formato Unix de una ruta de Windows:

$ cygpath -u "$USERPROFILE"
/cygdrive/c/Users/anthony

Consulte la Guía del usuario de Cygwin para obtener todos los detalles y cygpath --helpla información básica de uso.

Anthony Geoghegan
fuente