Я пытаюсь написать скрипт для импорта шрифта в 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