"ls"에 "."가 표시되는 이유는 무엇입니까?

"ls"에 "."가 표시되는 이유는 무엇입니까?

질문을 읽은 후"ls -a"를 입력할 때 "."은 무엇을 의미합니까? 그리고".."?, 비슷한 것이 있습니다.

왜 표시되어야 합니까 .? 제 말은, cd .작동하지 않는 디렉토리가 있나요 ? 사용자가 매번 이 줄을 보는 것이 어떻게 도움이 됩니까?

답변1

ls -a표시된 이유는 유틸리티 .와 관련이 없으며 ..Unix(및 Linux) 파일 시스템과 관련된 모든 것입니다.

모든 것이 파일입니다.

디렉터리는 실제로 파일 목록을 포함하는 파일입니다. 특정 디렉토리의 "내부"는 사용자 관점이므로 파일 시스템 관점은 아니지만 두 개의 특수 파일입니다.

  • 첫 번째는 이라고 하며 .현재 작업 디렉터리에 대한 참조입니다. 사람들은 .dll을 통해 현재 디렉토리에서 명령을 실행할 때 거의 매일 이를 사용합니다 ./scriptname.
  • 두 번째는 ..CWD 상위 디렉터리에 대한 참조라고 합니다. 마찬가지로 ., ..디렉토리를 상위 디렉토리로 변경하려는 모든 사람이 매일 사용합니다 cd ...

시스템 호출은 getdents()시스템 측의 주요 도구로 ls, 단순히 디렉토리의 모든 파일을 나열합니다. (기억하세요: 모든 것이 파일입니다. 장치, 디렉터리, 소켓 등이 모두 표시됩니다.)

실용성 측면에서 볼 때, ls이 명령의 작성자는 특정 정보나 정보 유형을 필터링할 수 있는 다양한 옵션과 옵션 조합을 제공합니다. 위의 @Gilles가 주석 처리한 것과 같이 및 를 제외한 ls -A모든 정보 포인트 파일을 표시합니다 . 이러한 옵션은 모두 후처리 옵션으로 간주될 수 있습니다. 발견된 내용이 아니라 표시되는 내용에 영향을 미칩니다 ....lsls

.기본적으로 및 를 명시 적으로 나열할 이유가 없습니다 ... 왜냐하면 우리 모두가 그것들이 어디에 있는지, 무엇을 위한 것인지, 언제 사용해야 하는지 알고 있기 때문입니다.

이상한 권한 문제를 해결할 때 이를 볼 수 있는 몇 가지 옵션이 있으면 확실히 도움이 됩니다.

확인하다맨페이지getdents()1. 작동 방식을 자세히 설명하고 를 사용하여 컴파일할 수 있는 샘플 프로그램의 소스 코드가 포함되어 있습니다 gcc -Wall. 이 소스 코드에는 디렉토리의 모든 파일이 나열되어 있습니다.


1. 적어도 우분투 맨페이지에는 getdents()샘플 코드가 있는 것 같습니다.

답변2

ls일반적으로 합계는 .표시 되지 않습니다 ... 기본적으로 ls모두 숨기기이름이 .(점 파일) 로 시작하는 파일. ls -a모든 것을 표시하도록 요청했기 때문에 표시됩니다. 일부 버전에는 ls약간 다른 옵션이 있어 ls -A모든 도트 파일을 표시하지만 .또는 ...

.ls -la예를 들어 현재 디렉터리와 해당 상위 디렉터리, 디렉터리에 있는 파일의 권한 및 소유권에 대해 보고하는 등 단순히 이름 이상의 내용을 나열하는 경우 표시가 유용할 수 있습니다.

관련 정보