[unix] 점으로 시작하는 파일 이름이 숨겨진 이유는 무엇입니까? 점을 첫 문자로 사용하지 않고 파일을 숨길 수 있습니까?

처음에는 이것이 우연의 일치라고 생각했지만 이제는 태그 도 있습니다. 숨겨진 파일 이름은 모두 점으로 시작합니다. 이것이 컨벤션입니까? 왜 선택 되었습니까? 변경할 수 있습니까? 또는 다른 말로하면 (관련 질문으로 @evilsoup은 다른 많은 사람들에게 답을 암시한다고 제안했습니다.) 이름을 바꾸지 않고 파일을 숨길 수 .있습니까 (이름의 첫 문자로 사용 )?



답변

위키 백과에 따르면 ,

파일 이름 앞에 a가 붙는 개념. 유닉스 초기의 소프트웨어 버그로 인해 숨겨져 있어야합니다. 특수 ...디렉토리 항목이 파일 시스템에 추가되면 ls 명령이 해당 항목을 표시하지 않기로 결정했습니다. 그러나,이 프로그램은 실수로 이름이 시작하는 파일 제외 기록 된 .문자보다는 정확한 이름 .또는 ...

… 그래서 버그로 시작한 다음 기능으로 받아 들였습니다 (레코드의 .경우 현재 디렉토리 ..에 대한 링크이고 그 위의 디렉토리에 대한 링크입니다. 그러나 이미 알고 있음을 확신합니다 ). 파일을 숨기는이 방법은 실제로 대부분의 시간에 충분하기 때문에 아무도 Windows 스타일의 파일 숨기기를 구현하는 데 신경 쓰지 않았다고 생각합니다.

다른 행동을 구현하면 * nix 세계에 훨씬 더 많은 조각화가 발생한다는 사실이 있습니다.

파일 이름을 바꾸지 않는 파일을 숨기는 또 다른 방법이 있지만 GUI 파일 관리자에서만 작동합니다 (그리고 그 중 보편적 인 것은 아닙니다-주요 Linux는 그것을 사용하지만 OSX의 Finder는 그렇게 생각하지 않습니다. 틈새 Linux 파일 관리자는이 동작을 지원하지 않을 것입니다.) :이라는 .hidden파일을 만들고 숨기려는 파일 이름을 한 줄에 하나씩 넣을 수 있습니다. ls쉘 글로브는 이것을 존중하지 않지만 여전히 유용 할 것입니다.


답변

점으로 시작하는 파일 은 기본적으로 “숨겨진”파일과 거의 동일한 효과를 갖지만 동일하지 않은 “ls”명령에 의해 무시 됩니다 (다른 명령은 동일하거나 수행하지 않도록 선택할 수 있음). “hidden”은 해당 속성 중 하나가 아니므로 점으로 시작하는 파일은 “hidden”이 아닙니다. DOS / Windows와 달리 “hidden”은 Unix의 속성이 아닙니다. 유닉스에는 많은 속성이 있지만 ( “man chattr”은 모든 속성을 알려줍니다) hidden은 그중 하나가 아닙니다.

도트 파일이 “ls”에 의해 무시되는 이유는 실제로 매우 재미 있고 당황 스럽습니다. 그것은 디자인 결정이 아니라 유닉스 초기의 소프트웨어 버그의 결과였다 . 특별한 때. .. 디렉토리 항목이 파일 시스템에 추가되었으므로 ls 명령이 방해가되기 때문에 표시하지 않아야한다고 결정했습니다. 그러나 프로그램은 이름이로 시작하는 파일을 제외하도록 급하게 작성되었습니다. 정확한 이름이 아닌 “.” 또는 “..”. 그리고 그 이후로 유닉스에서 따라온 선례를 만들었습니다. 유쾌하게도, 유닉스 직원들이 계획 9를 만들려고했을 때, 점 파일을 의도적으로 넣지 않았습니다 .


답변

파일을 숨길 수 있는지 여부와 조건은 사용중인 파일 시스템 및 해당 드라이버에 따라 다릅니다. 전통적인 유닉스 파일 시스템에는 파일에 대한 “숨기기”속성이 없습니다.

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

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

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

ACFS 파일 시스템의 스냅 샷 기능을 사용하는 경우 해당 .ACFS디렉토리를 통해 해당 파일 시스템의 기존 파일 시스템 스냅 샷에 액세스 할 수 있습니다 . 숨겨져 있지 않은 경우 백업 프로그램은 파일 시스템의 현재 내용과 기존 스냅 샷의 내용을 모두 백업 할 수 있습니다. 일반적으로 현재 상태 또는 하나의 특정 스냅 샷 상태를 백업하려고합니다.


답변