백슬래시를 사용하여 현재 작업 디렉토리를 얻는 방법은 무엇입니까?

백슬래시를 사용하여 현재 작업 디렉토리를 얻는 방법은 무엇입니까?

Wine's 에 글꼴을 넣었기 때문에 Wine에서 글꼴을 가져오는 스크립트를 작성하려고 합니다 c:\Windows\Fonts. 하지만 reg 파일에서 가져오지 않으면 Wine이 글꼴을 읽지 않습니다.

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

어떻게 사용하거나 변경하는지 모르겠습니다 /. 슬래시를 백슬래시로 바꾸는 방법을 아는 사람이 있습니까?\$(pwd)$PWD

에코 및 출력 파일에 문제가 있습니다. 내 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

삼:

[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\Fontsresult 변수의 경로가 불완전한 이유를 모르겠습니다.

답변1

무엇을 하려는지 잘 모르겠지만 슬래시를 변경하는 것은 쉽습니다.

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

이는 ksh의 문자열 조작 기능을 사용하는 것입니다.다음 대상에도 사용 가능bash. 특히, ${foo//bar/baz/}변수에 있는 모든 문자열이 대체됩니다. and는 특수 문자이므로 사용하기 전에 이스케이프 처리(and)해야 합니다. 위의 공식은 다음과 동일합니다.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

관련 정보