이것은 작동하지 않습니다:
$ ls "~/.wine/drive_c/tools/Family Tree v2.0"
ls: cannot access '~/.wine/drive_c/tools/Family Tree v2.0': No such file or directory
그러나 이는 다음과 같습니다.
$ ls "/home/daniel/.wine/drive_c/tools/Family Tree v2.0"
Dossiers Dossiers_orig Infos.opt Racines.exe 'Register OCX.bat' racines.CNT
Dossiers-2019.11.03-11.46.tar.gz Html REGSVR32.exe Racines.hlp Uninst.isu readme.txt
~
와 동일하다고 가정 하면 /home/daniel
여기서 무슨 일이 일어나고 있습니까?
답변1
큰따옴표를 사용하더라도 인용하면 물결표 확장이 억제됩니다.
~
사용될 수 있다홈 디렉토리의 경로로상황에 따라물결표 확장수행됩니다. ~
같지 않다.
또는..
. 실제로 ~
홈 디렉토리의 대체 이름으로 사용되는 항목이 파일 시스템에 없습니다 .
~
단독으로 또는 경로의 첫 번째 구성 요소로 나타날 때 쉘은 이를 다음으로 확장합니다.절대 경로홈 디렉토리로 이동합니다. 하지만 ~
인용할 때는 이런 일이 발생하지 않습니다 .큰따옴표더 약한 형태를 제공인용~보다작은따옴표이는 다른 종류의 작업에 중요합니다.확장, 와 같은매개변수 확장(확장 $HOME
). 그러나 큰따옴표도 물결표 확장을 억제합니다.
따라서 ~
이 명령에서는 확장되지 않았으며 다음과 같이 인용되었습니다.
ls "~/.wine/drive_c/tools/Family Tree v2.0"
다행스럽게도 일부 부분은 인용되고 일부 부분은 인용되지 않은 주장을 작성하는 것이 허용됩니다. 따라서 ~/
따옴표 앞에 넣고 나머지는 그대로 인용할 수 있습니다 .
ls ~/".wine/drive_c/tools/Family Tree v2.0"
또는 매개변수 확장이 큰따옴표에서도 수행되지만 작은따옴표에서는 수행되지 않으므로 다음을 사용할 수 있습니다.
ls "$HOME/.wine/drive_c/tools/Family Tree v2.0"
(기술적으로는 환경 변수가 설정 해제된 경우에도 HOME
일부 쉘은 여전히 홈 디렉토리가 무엇인지 파악하고 확장하려고 시도하며 ~
그러한 bash
쉘 중 하나라는 점에서 다릅니다. 그러나 설정을 해제하는 것은 드물고 권장되지 않습니다 HOME
. )
추가 자료: