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 bar
en baz
la 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 usarsed
para 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, tr
convierte todo /
con \
; Ejemplo:
$ echo $PWD | tr '/' '\\'
\home\pandya