逆スラッシュを使用して現在の作業ディレクトリを取得するにはどうすればよいですか?

逆スラッシュを使用して現在の作業ディレクトリを取得するにはどうすればよいですか?

私は Wine にフォントをインポートするスクリプトを書こうとしています。なぜなら、私はフォントを Wine の に入れたのです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/}すべての文字列 を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

関連情報