Como obtenho o diretório de trabalho atual com barra invertida?

Como obtenho o diretório de trabalho atual com barra invertida?

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\Fontse 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 barna bazvariá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 usarsedpara converter tudo /em \seguindo o comando:

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

Exemplo:

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

Outra forma é usartr:

tr '/' '\\'

Pelo comando acima, trconverte tudo /com \; Exemplo:

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

informação relacionada