왜 `~`라는 디렉토리가 있습니까?

왜 `~`라는 디렉토리가 있습니까?

이 버그가 있거나 새로운 도구가 어떻게 작동하는지 테스트하려고 하는데 현재 작업에 사용할 디렉터리를 선택하라는 메시지가 표시됩니다. 나는 디렉토리에서 . 를 ~/Code/indep입력했습니다 . ~/Code/indep/tarbell(어리석은 일이지만 "tarbell"을 입력할 수도 있었지만 어쨌든 말이죠.) 그것을 만들라는 메시지가 표시되었고 존재하지 않았기 때문에 예라고 말했습니다. 해당 디렉토리의 내용을 검사하면 다음과 같은 내용이 표시됩니다.

brian@navis:~/Code/indep$ ls
~ project1 project2 project3 ...

나는 "오, ~에 대한 심볼릭 링크를 생성한다는 것이 이상하다"고 생각했습니다. 하지만:

brian@navis:~/Code/indep$ file ./~
./~: directory

file디렉토리라고 생각하세요.

brian@navis:~/Code/indep$ ls -l
drwxr-xr-x 3 brian brian 4096 Nov  8 16:50 ~
drwxr-xr-x 8 brian brian 4096 Oct 14 18:42 project1
drwxr-xr-x 3 brian brian 4096 Sep 10 21:15 project2
drwxr-xr-x 5 brian brian 4096 Oct 14 19:33 project3
...

도 이렇습니다 ls -l.

"아...이거 하드링크인가요? 실제로는 사용하지 않는군요."라고 생각했지만, 디렉토리에 대한 하드링크를 만들 수 없었습니다. 그래서... 제가 이해하지 못하는 것들로만 압축한 것 같아요. 내 홈 디렉토리를 다른 디렉토리에 마운트했습니까?

이 시점에서 나의 주요 목표는 이 폴더에서 내 홈 디렉토리에 대한 참조를 제거하는 것입니다( rm답은 아닌 것 같습니다). 그러나 무슨 일이 일어나고 있는지도 알고 싶습니다.

편집하다:

되돌아보면 무슨 일이 일어났는지 완전히 이해합니다. 아래 답변과 같이 프로그램은 ~현재 디렉토리에 ""라는 디렉토리를 생성했습니다. 정말 혼란스러운 유일한 점은 내가 실제로 디렉토리를 보는 방식과 일치하지 않는다는 사실입니다. 때로는 " "라고 부르기도 ~하고, 때로는 " " 라고 부르기도 합니다 ./~. 실제로 무슨 일이 일어나고 있는지 볼 수 있는 것은 후자를 수행할 때만 가능하지만, ~" "를 사용하는 절대 경로로 보고 있는 것과 실제로 로컬 디렉터리인 것을 혼동하고 있다는 것을 이해하기 전까지는 말입니다.

답변1

이것은 "~"라는 디렉터리입니다. "~"가 인수의 첫 번째 문자인 경우 쉘은 이를 확장하려고 시도하므로 특별한 조치를 취해야 합니다.

$ mkdir ./~
$ file ./~
./~: directory
$ rm -ri ./~
rm: remove directory ‘./~’? y

관련 정보