
나는 쉘에서 놀면서 ./.를 입력했습니다. 다음과 같이 출력됩니다.
bash: ./: Is a directory
"./"는 주어진 이름을 가진 디렉토리가 존재하는지 확인하는 것 같습니다. 내 이해가 올바른지 확인하기 위해 이에 대한 문서를 찾으려고 노력했지만 온라인에서는 아무것도 찾을 수 없습니다. 누구든지 나에게 이것을 설명해 줄 수 있습니까?
답변1
이에 대한 일반적인 정의는 Bash 매뉴얼에서 찾을 수 없지만POSIX 사양(경로 이름 확인 섹션):
특수 파일 이름 점은 이전 항목이 지정한 디렉터리를 참조해야 합니다.
그렇다면 전임자는 무엇입니까 .
? 저는 중요한 부분을 강조했습니다.
경로명이 슬래시로 시작하지 않으면 경로명의 첫 번째 파일명의 선행자가 다음과 같이 간주됩니다.현재 작업 디렉토리프로세스의
또한,
슬래시가 아닌 문자가 하나 이상 포함되고 후행 슬래시로 끝나는 경로 이름은 단일 점 문자( '.' )가 경로 이름에 추가된 것처럼 해석됩니다.
따라서 입력하면 기본적으로 현재 작업 디렉터리를 가리키는 으로 확인 ./
됩니다 . ./.
쉘에 무언가를 입력하고 를 누르면 Enter쉘은 첫 번째 부분을 명령으로 실행하려고 시도합니다. (기본적으로 첫 번째 공백까지의 첫 번째 문자 묶음입니다.)
라는 명령이나 실행 파일이 없으므로 ./.
실패하고 ./
"디렉토리입니다"라고 알려줍니다. 재미있게,.
~이다명령( 로도 발견되는 내장 명령임 source
)이므로 그냥 입력하면 .
다음을 얻게 됩니다: bash: .: filename argument required
.
답변2
다른 사람들이 쓴 것처럼 ./
현재 디렉토리의 이름입니다. bash 프롬프트에 입력 ./
하고 Enter 키를 쳤을 때 현재 디렉터리를 명령으로 실행하려고 시도했지만 물론 실패했으며 bash는 "나는 그렇게 할 수 없습니다. ./
는 디렉터리이고 나는 디렉터리를 명령으로 실행할 수 없습니다."
답변3
는 .
현재 디렉토리를 의미합니다. ./
현재 디렉터리의 모든 파일에 대한 접두사로 사용됩니다 .
마찬가지로 ..
이전(상위) 디렉터리를 의미합니다. 이는 더 높은 수준의 디렉터리로 이동할 때 자주 사용됩니다.cd ../../../
다음 내용이 포함된 파일 시스템이 제공됩니다.
# Comments start with a hash and aren't parsed
/ # root directory
/foo/ # first level directory
/foo/bar/ # second level directory
/foo/bar/baz # third level directory
/foo/bar/baz/qux # a file in the third level directory
세 번째 레벨 디렉터(baz)에서 를 실행하면 가 ls
표시됩니다 qux
. 을 실행하면 을 ls .
실행할 때와 마찬가지로 동일한 출력을 얻습니다 ls ./
.
당신이 세 번째 레벨 디렉터(baz)에 있고, 달리고 ls ..
둘 ls ../
다 당신에게 baz
. 즉, 한 수준 높은 디렉터리의 내용입니다.
답변4
Linux에서 ./는 현재 디렉터리를 의미합니다(그리고 ../는 상위 디렉터리를 나타냅니다).
ls -a를 하면 을 볼 수 있습니다. 및 .. 디렉토리로 나열됨(.은 숨겨진 디렉토리를 나타내기 때문에 -a가 필요함)