역 슬래시를 사용하여 현재 작업 디렉토리를 어떻게 얻습니까?

역 슬래시를 사용하여 현재 작업 디렉토리를 어떻게 얻습니까?

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

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

그리고 or를 사용하여 /을 로 변경하는 방법을 모르겠습니다 . 슬래시를 백슬래시로 바꾸는 방법을 아는 사람이 있습니까?\$(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\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

관련 정보