파일 이름이 점으로 시작하는 이유는 무엇입니까? 점을 첫 번째 문자로 사용하지 않고 파일을 숨길 수 있나요?

파일 이름이 점으로 시작하는 이유는 무엇입니까? 점을 첫 번째 문자로 사용하지 않고 파일을 숨길 수 있나요?

처음엔 우연인 줄 알았는데, 이제 보니 우연이기도 하다.라벨이를 위해 모든 숨겨진 파일 이름은 점으로 시작합니다. 이것이 합의인가? 왜 그것을 선택합니까? 변경될 수 있나요? 또는 다른 말로 하면(다른 많은 질문에 대한 답을 암시하는 관련 질문에서 @evilsoup가 제안한 것처럼): 이름을 바꾸지 않고 파일을 숨길 수 있습니까( .이름의 첫 번째 문자로 사용됨)?

답변1

위키피디아에 따르면,

앞에 .이 붙는 파일 이름은 Unix 초기의 소프트웨어 버그 결과를 숨기도록 되어 있습니다. ls 명령은 파일 시스템에 추가되는 특수 항목 .및 디렉토리 항목을 ..표시하지 않기로 결정되었습니다 . 그러나 이름이 .정확한 이름 .이나 ...

...그래서 그것은 오류로 시작되었지만 기능으로 받아들여졌습니다(기록을 위해 .현재 디렉터리에 대한 링크와 ..그 위 디렉터리에 대한 링크도 있지만 이미 알고 계셨을 거라 확신합니다). 이 파일 숨기기 방법은 실제로 대부분의 경우 충분히 잘 작동하므로 아무도 Windows 스타일 파일 숨기기를 구현하려고 하지 않을 것 같습니다.

또한 다른 동작을 구현하면 *nix 세계에 더 많은 단편화가 발생한다는 사실도 있는데, 이는 누구도 원하지 않는 일입니다.

파일을 숨기는 또 다른 방법이 있습니다아니요이름을 바꾸는 작업이 필요하지만 GUI 파일 관리자에서만 작동합니다. (그들 중에서 보편적이지는 않습니다. 주요 Linux에서 사용하지만 OSX의 Finder는 그렇게 하지 않으며 틈새 Linux 파일 관리자는 이 동작을 지원하지 않을 것 같습니다.) : 이라는 파일을 만들고 .hidden숨기려는 파일 이름을 한 줄에 하나씩 넣을 수 있습니다. lsShell glob은 이를 존중하지 않지만 여전히 작동할 수 있습니다.

답변2

점으로 시작하는 파일은무시당하다기본적으로 "ls" 명령을 통해 파일을 "숨기는" 것과 거의 동일한 효과를 가지지만 동일하지는 않습니다(다른 명령도 선택적으로 동일하거나 동일하지 않을 수 있음). 점으로 시작하는 파일은 "숨겨짐"이 속성 중 하나가 아니기 때문에 "숨겨지지" 않습니다.DOS/Windows와 달리 "hidden"은 Unix의 속성이 아닙니다.유닉스에는 많은 속성이 있지만("man chattr"을 통해 이에 대해 모두 알 수 있음) 숨기는 속성은 그중 하나가 아닙니다.

"ls"가 도트 파일을 무시하는 이유는 실제로 매우 흥미롭고 당혹스럽습니다. 이는 디자인 결정이 아닙니다.초기 Unix 소프트웨어 버그의 결과. 특별할 때. 그리고.. 디렉토리 항목이 파일 시스템에 추가되었으며 ls 명령이 방해가 되는 항목을 표시하지 않기로 결정했습니다. 그러나 프로그램은 "." 또는 ".."라는 정확한 이름이 아닌 . 문자로 끝나는 이름을 제외하도록 급히 작성되었습니다. 그리고 그 이후로 Unix가 따랐던 선례를 세웠습니다. 흥미로운 점은 Unix 사람들이 계속해서 Plan 9를 만들었다는 것입니다.의도적으로 도트 파일을 넣지 않았습니다..

답변3

파일을 숨길 수 있는지 여부와 조건은 사용 중인 파일 시스템과 해당 드라이버에 따라 다릅니다. 기존 Unix 파일 시스템에는 파일에 대한 "숨겨진" 속성이 없습니다.

파일 시스템 드라이버는 디렉터리 목록을 얻는 데 사용되는 시스템 호출에 결과를 제공할 때 파일 이름을 생략하여 원하는 파일을 숨길 수 있습니다. sergut가 그의 답변에서 설명한 것처럼 점으로 시작하는 파일은 실제로 숨겨지지 않습니다.

(이것은 루트킷이 파일을 숨기는 방법이기도 합니다. 루트킷은 디렉터리 목록을 생성하는 시스템 호출을 연결하고 숨기려는 파일을 필터링합니다.)

예를 들어, Oracle ACFS 클러스터 파일 시스템에서는 디렉토리가 <filesystem mountpoint>/.ACFS/실제로 숨겨져 있습니다. 를 사용해도 전혀 나열되지 않습니다 ls -a. 그러나 해당 디렉토리가 있다는 것을 알고 있으면 정상적으로 액세스할 수 있습니다.

.ACFSACFS 파일 시스템의 스냅샷 기능을 사용하는 경우 해당 파일 시스템의 기존 파일 시스템 스냅샷은 이 디렉토리를 통해 액세스할 수 있습니다 . 숨겨져 있지 않으면 백업 프로그램이 파일 시스템의 현재 내용과 기존 스냅샷의 내용을 백업하게 될 수 있습니다. 이는 종종 바람직하지 않을 수 있습니다. 특정 스냅샷.

관련 정보