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

1

Estou tentando escrever um script para importar uma fonte no wine, porque coloquei a fonte em c:\Windows\Fonts do wine, mas o vinho não a lê se eu não importar do arquivo reg:

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

E eu não sei como alterar o "/" para "\", usando "$ (pwd)" ou $ PWD. Alguém sabe como posso substituir a barra por uma barra invertida?

Eu tenho um problema 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 tento 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 são: c: \ Windows \ Fonts, e eu não sei o que aconteceu com o resto com \ 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" 

O resultado é: Courier New c: windowsFontcour.tff Courier Novo 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 é o mesmo o primeiro c: \ windows \ Fonts, eu não sei porque o caminho não está cheio no resultado varible

eu resolvo o 3: com

[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"
    
por inukaze 15.10.2014 / 13:44

2 respostas

3

Não tenho certeza do que você está tentando fazer, mas é fácil alterar as barras:

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

Isso está usando os recursos de manipulação de strings do ksh também disponíveis em bash . Especificamente, ${foo//bar/baz/} substituirá todas as ocorrências da string bar por baz na variável $foo . Como / e \ são caracteres especiais, eles precisam ser escapados ( \ e \/ ) para que isso funcione com eles. O acima é equivalente a:

pwd | sed 's#/#\#g'  
    
por 15.10.2014 / 13:50
2

Você pode usar sed para converter todos os / em \ seguindo o comando:

sed  's/\//\/g'

Exemplo:

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

Outra maneira é usar tr :

tr '/' '\'

Pelo comando acima, tr converte todos / com \ ; Exemplo:

$ echo $PWD | tr '/' '\'
\home\pandya
    
por 15.10.2014 / 14:46