ls -a를 실행한 후 ".."가 나타나는 이유가 있나요?

ls -a를 실행한 후 ".."가 나타나는 이유가 있나요?

내가 달리면ls -a

user@users-MacBook-Pro:~$ ls -a
.           ..

나는 (현재 디렉토리와 상위 디렉토리?) .를 얻습니다...

그들의 외모 뒤에 어떤 이유가 있습니까 ls -a?그들이 뭔가 흥미로운 일을 했나?

답변1

왜냐하면 -a모든 파일을 표시한다는 의미이기 때문입니다. 와 함께 사용하면 유용합니다 -l. 사용하지 않을 때 쓸모없는 파일이 나타나는 이유 -l는 일관성 때문이며 Unix는 무엇이 당신에게 좋은지 이중 추측하려고 시도하지 않기 때문입니다.

이 두 가지( , 및 ) 를 제외하는 옵션 -A(적어도 GNU의 경우 )이 있습니다 .ls...

흥미롭게도 유닉스에서 파일을 숨기려는 아이디어는 ls이 두 파일을 숨기려고 했던 버그에서 비롯됐다. 코드를 단순하게 유지하기 위해 원래 구현에서는 첫 번째 문자만 확인합니다. 사람들은 이를 파일을 숨기는 데 사용했고, 이후 기능이 되었고 -a숨겨진 파일을 표시하는 옵션이 추가되었습니다. 나중에 누군가가 당신처럼 왜 .그런지 궁금해했고 ..우리는 그들이 거기 있다는 것을 알았습니다. 이 -A옵션이 탄생했습니다.

참고: Unix의 파일은 생각보다 훨씬 느슨한 의미를 갖습니다.
파일 기본 {일반 파일, 디렉토리, 명명된 파이프, 유닉스 소켓, 심볼릭 링크, 장치}.

답변2

그들이 거기에 있다는 것이 무슨 의미가 있나요?

소유권과 권한을 표시합니다. 이것은 일반적으로 두 명의 사용자가 있고 그 중 한 명이 예상한 대로 다른 사람의 파일을 볼 수 없다고 말할 때 확인해야 할 가장 중요한 사항입니다.

답변3

그림에서 알 수 있듯이https://ss64.com/bash/ls.html-a매개변수를 추가하면 ;로 시작하는 ls
항목을 포함하여 모든 항목을 가져옵니다 .. 숨겨진 항목으로 간주되며 단순에서는 사용할 수 없습니다 ls.

답변4

나타나는 이유가 있나요 ls -a?

나는 이것이 다른 많은 일들과 마찬가지로 단지 역사의 우연일 뿐이라고 확신합니다.


에 따르면이야기Rob Pike가 작성한 "숨겨진" 파일(점 파일)은 우연히 생성됩니다.

오래 전 Unix 파일 시스템의 설계가 공식화되었을 때 항목 .... 확실하지는 않지만 ..파일 시스템이 계층화되었을 때 버전 2를 다시 작성하는 동안이었던 것 같습니다(초기에는 매우 다른 구조를 가졌습니다). 그러나 를 입력하면 ls이러한 파일이 나타나므로 Ken이나 Dennis는 프로그램에 간단한 테스트를 추가합니다. 당시에는 어셈블러로 작성되었지만 문제의 코드는 다음과 같습니다.

if (name[0] == '.') continue;

명령문은 예상보다 약간 짧습니다.

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

하지만 쉽죠.

결과는 두 가지입니다.

[...]두 번째로 더 나쁜 것은 "숨겨진" 파일이나 "점" 파일을 생성한다는 아이디어입니다.그 결과, 더 게으른 프로그래머들이 모든 사람의 홈 디렉토리에 파일을 넣기 시작했습니다.

ls -a이를 바탕으로 게으른 프로그래머가 만든 도트 파일을 표시하기 위해 후속 추가가 이루어졌다고 추측하는 것은 무리가 없어 보입니다. 간단한 구현은 위의 테스트를 차례로 비활성화하여 다시 생성되고 표시되도록 하는 것 .입니다 ...

역사가 무엇이든, 그것은 그들이 있음을 보여줍니다.기준지금:

-a
이름이 <마침표>( '.' )로 시작하는 항목을 포함하여 모든 디렉터리 항목을 기록합니다.

하지만 ls -A조금 더 합리적인 조치를 취해야 합니다. 해당 항목이 얼마나 업데이트되었는지 모르겠습니다.

-A
이름이 <마침표>( '.' )로 시작하는 항목을 포함하여 모든 디렉토리 항목을 작성합니다. 단, 점 및 점-점 항목이 있는 경우 제외합니다.


그들이 뭔가 흥미로운 일을 했나?

일반적인 방식으로 나열하는 것은 ls그리 흥미롭지 않습니다.

그러나 예를 들어 .in /path/subdir에 의해 주어진 inode를 찾는 것은 subdirin의 inode를 찾는 것과 같습니다 /path. 디렉토리 내의 파일에 액세스할 수 있는 디렉토리 제어의 소유권 및 권한, 이에 따라 얻을 수 있는 정보 .. 그러나 디렉터리 자체의 속성이 필요한 경우 언제든지 ls -ld .그렇게 할 수 있습니다.ls -ld /path/subdir

관련 정보