Estou tentando escrever um script para importar uma fonte no Wine, porque coloquei a fonte em wine's c:\Windows\Fonts
, mas o Wine não lê se eu não importar do arquivo reg:
"Font Name"="Z:\path\to\my\wineprefix\c:\Windows\Fonts\file.ttf"
E não sei como mudar o /
to \
, usando $(pwd)
ou $PWD
. Alguém sabe como posso substituir a barra por uma barra invertida?
Tenho problemas com o echo e com o arquivo de saída. No meu script bash eu tenho isso
RUTA=""$( cd -P "$( dirname "$" )" && pwd )""
RUTAINVERSA=$(printf '%s\n' "${PWD//\//\\}")
Bem, eu tentei com o seguinte:
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"
O resultado no passado foi: c:\Windows\Fonts
e não sei o que aconteceu com o resto \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"
Os resultados são: 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"
e é igual ao primeiro c:\windows\Fonts
, não sei porque o caminho não está completo na variável resultado.
Responder1
Não tenho muita certeza do que você está tentando fazer, mas alterar as barras é fácil:
$ printf '%s\n' "${PWD//\//\\}"
\home\terdon
Isso está usando os recursos de manipulação de strings do kshtambém disponível embash
. Especificamente, ${foo//bar/baz/}
substituirá todas as ocorrências da string bar
na baz
variável $foo
. Como /
e \
são caracteres especiais, eles precisam ter escape ( \\
e \/
) para que isso funcione com eles. O acima é equivalente a:
pwd | sed 's#/#\\#g'
Responder2
Você pode usarsed
para converter tudo /
em \
seguindo o comando:
sed 's/\//\\/g'
Exemplo:
$ echo $PWD | sed 's/\//\\/g'
\home\pandya
Outra forma é usartr
:
tr '/' '\\'
Pelo comando acima, tr
converte tudo /
com \
; Exemplo:
$ echo $PWD | tr '/' '\\'
\home\pandya