Как получить текущий рабочий каталог с помощью перевернутого слеша?

Как получить текущий рабочий каталог с помощью перевернутого слеша?

Я пытаюсь написать скрипт для импорта шрифта в Wine, поскольку я помещаю шрифт в Wine c:\Windows\Fonts, но Wine не считывает его, если я не импортирую из reg-файла:

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

И я не знаю, как изменить to /, \используя $(pwd)or $PWD. Кто-нибудь знает, как заменить слеш на обратный слеш?

У меня проблема с echo и с выходным файлом. В моем скрипте bash у меня есть это

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

Ну, я попробовал следующее:

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"

Результат в прошлом: c:\Windows\Fonts, и я не знаю, что случилось с остальными с \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" 

Результат: 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"

и это то же самое, что и в первом случае c:\windows\Fonts, я не знаю, почему путь не заполнен в переменной result.

решение1

Я не совсем понимаю, что вы пытаетесь сделать, но изменить косые черты легко:

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

Это использование возможностей ksh по работе со строками.также доступно вbash. В частности, ${foo//bar/baz/}заменит все вхождения строки barс bazв переменной $foo. Поскольку /и \являются специальными символами, их необходимо экранировать ( \\и \/), чтобы это работало с ними. Вышеприведенное эквивалентно:

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

решение2

Вы можете использоватьsedпреобразовать все /в \с помощью следующей команды:

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

Пример:

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

Другой способ — использоватьtr:

tr '/' '\\'

Приведенная выше команда trпреобразует все /с \; Пример:

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

Связанный контент