¿Cómo obtengo el directorio de trabajo actual con barra invertida?

¿Cómo obtengo el directorio de trabajo actual con barra invertida?

Estoy intentando escribir un script para importar una fuente en Wine, porque puse la fuente en Wine c:\Windows\Fonts, pero Wine no la lee si no la importo desde el archivo de registro:

"Font Name"="Z:\path\to\my\wineprefix\c:\Windows\Fonts\file.ttf"

Y no sé cómo cambiar a /, \usando $(pwd)o $PWD. ¿Alguien sabe cómo puedo reemplazar la barra con una barra invertida?

Tengo problemas con el eco y con el archivo de salida. En mi script bash tengo esto

RUTA=""$( cd -P "$( dirname "$" )" && pwd )""
RUTAINVERSA=$(printf '%s\n' "${PWD//\//\\}")

Bueno, lo intenté con lo siguiente:

1:

echo 'REGEDIT4

[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]
"Courier New"="'"Z:\\$RUTAINVERSA\\wine\\data\\dosdevices\\c:\\windows\\Fonts\\cour.ttf"'"
"Courier New Bold"="'"Z:\\$RUTAINVERSA\\wine\\data\\dosdevices\\c:\\windows\\Fonts\\courbd.ttf"'"' >> "$ARREGLOS/Fuentes.reg"

El resultado en el pasado son: c:\Windows\Fonts, y no sé qué pasó con el resto con \file.ttf.

2:

echo >> "$ARREGLOS/Fuentes.reg"
echo "[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]" >> "$ARREGLOS/Fuentes.reg"
echo "Courier New"="c:\\windows\\Fonts\\cour.ttf" >> "$ARREGLOS/Fuentes.reg"
echo "Courier New Bold"="c:\\windows\\Fonts\\courbd.ttf" >> "$ARREGLOS/Fuentes.reg" 

El resultado es: Courier New c:windowsFontcour.tff Courier New Bold c:widowsFontscourbd.ttf

3:

[HKEY_CURRENT_USER\\Software\\Wine\\Fonts\\External Fonts]
"Courier New"="'"c:\\\windows\\\Fonts\\\cour.ttf"'"
"Courier New Bold"="'"c:\\\windows\\\Fonts\\\courbd.ttf"'" ' >> "$ARREGLOS/Fuentes.reg"

y es lo mismo el primero c:\windows\Fonts, no sé por qué la ruta no está completa en la variable resultado.

Respuesta1

No estoy del todo seguro de lo que intentas hacer, pero cambiar las barras es fácil:

$ printf '%s\n' "${PWD//\//\\}"
\home\terdon

Esto está utilizando las capacidades de manipulación de cadenas de ksh.también disponible enbash. Específicamente, ${foo//bar/baz/}reemplazará todas las apariciones de la cadena baren bazla variable $foo. Dado que /y \son caracteres especiales, es necesario utilizar caracteres de escape ( \\y \/) para que esto funcione con ellos. Lo anterior equivale a:

pwd | sed 's#/#\\#g'  

Respuesta2

Puedes usarsedpara convertir todo /con \el siguiente comando:

sed  's/\//\\/g'

Ejemplo:

$ echo $PWD | sed  's/\//\\/g'
\home\pandya

Otra forma es utilizartr:

tr '/' '\\'

Con el comando anterior, trconvierte todo /con \; Ejemplo:

$ echo $PWD | tr '/' '\\'
\home\pandya

información relacionada