如何使用反斜杠获取当前工作目录?

如何使用反斜杠获取当前工作目录?

我正在尝试编写一个脚本来在 Wine 中导入字体,因为我将字体放入 wine's 中c:\Windows\Fonts,但是如果我不从 reg 文件导入,Wine 不会读取它:

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

我不知道如何使用或更改/为。有人知道如何用反斜杠替换斜杠吗?\$(pwd)$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,我不知道为什么变量结果中的路径不完整。

答案1

我不完全确定你想要做什么,但更改斜杠很容易:

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

这是使用 ksh 的字符串操作功能也可用于bash。具体来说,将替换变量中${foo//bar/baz/}出现的所有字符串。由于和是特殊字符,因此需要对它们进行转义(和)才能使用它们。上式等价于:barbaz$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

相关内容