$HOME 경로를 물결표 ~로 변경하는 스크립트 ~ [중복]

$HOME 경로를 물결표 ~로 변경하는 스크립트 ~ [중복]

나는 시도했다: $ echo $HOME sed /$HOME/~/g

하지만 그것은 작동하지 않습니다. 아마도 슬래시 때문일까요?

누구든지 이 작업을 수행하는 스크립트를 가지고 있습니까?

  • Bash 내장 기능 사용
  • sed 사용

감사해요

답변1

명령이 작동하지 않는 원인이 몇 가지 있습니다.

첫째, bash는 작은 따옴표 내에서 변수 확장을 수행하지 않습니다(명령 확장 등도 수행하지 않음). 큰따옴표를 사용해야 합니다.

또한 $HOME슬래시가 하나 이상 포함될 가능성이 높으므로 sed명령에서 슬래시 기호를 대상 문자열과 대체 문자열 사이의 구분 기호로 사용하면 다음에 있는 모든 슬래시를 이스케이프해야 함을 의미합니다 $HOME.

$ echo $HOME | sed "s/${HOME//\//\\\/}/~/"
~

아래 귀하의 의견에 대한 응답으로, 그렇습니다. bash의 문자열 변수 연산자를 사용하여 이 작업을 수행하고 더 간결하게 할 수도 있습니다.

$ echo $A
/home/jim/screenshot.png
$ echo "${A/$HOME/\~}" 
~/screenshot.png

관련 정보