如何使用反斜線取得目前工作目錄?

如何使用反斜線取得目前工作目錄?

我正在嘗試編寫腳本來在 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

相關內容