BASH에서 ./는 무엇입니까?

BASH에서 ./는 무엇입니까?

나는 쉘에서 놀면서 ./.를 입력했습니다. 다음과 같이 출력됩니다.

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가 필요함)

관련 정보