카탈로그 파일에는 어떤 유형의 정보가 포함되어 있나요?

카탈로그 파일에는 어떤 유형의 정보가 포함되어 있나요?

Linux의 모든 것(디렉토리 포함)은 파일이라고 들었습니다. 그래서 카탈로그 파일에 접근하려고 하는데, 읽으려고 하면 cat오류가 발생합니다 cat: xp: Is a directory. less, more, 및를 사용하면 head비슷한 결과가 나왔고 tailVim nl을 사용하는 동안 일종의 탐색 메뉴가 표시되었습니다.

그래서 나 자신을 찾을 수 없을 것 같아서 답을 찾아 여기에 왔습니다.

그래서...카탈로그 파일에는 어떤 유형의 정보가 포함되어 있나요?

나는 대답에 해당 디렉토리에 있는 파일의 inode에 대한 일종의 링크가 포함되어 있다고 가정합니다. 그러나 여기에는 어떤 다른 종류의 정보가 포함되어 있습니까?

파일에 액세스하여 편집할 수 있는 방법도 있습니까?

답변1

디렉토리는 일반적으로 inode 구조를 가지며 다른 파일과 마찬가지로 데이터 블록을 보유한다는 점에서 파일입니다.

디렉토리에는 파일 이름과 해당 inode 번호가 포함된 일부 데이터 구조가 포함되어야 합니다. 구조는 간단한 목록이거나 구현 세부 사항인 일종의 트리일 수 있습니다. 일부 파일 시스템에서는 더 빠른 액세스를 위해 일부 inode 데이터(예: 불변 파일 유형)도 디렉터리 내에 복사됩니다. (물론 FS가 VFAT인 경우 디렉터리 항목은 거의 항상 inode입니다.)

Linux는 디렉토리의 내용을 읽는 것을 허용하지 않습니다 read(). 아마도 원시 데이터는 파일 시스템마다 다르기 때문에 사용자 공간에 쓸모가 없고 사용자 공간 프로그램은 이를 활용하기 위해 모든 파일 시스템의 내부 구조를 알아야 하기 때문일 것입니다. 또는 커널은 각 파일 시스템이 디렉터리의 호환 가능한 보기를 제공하도록 해야 하지만 이것이 getdents()/ readdir()호출의 목적입니다.

일부 다른 Unixen에서는 최소한 이전 버전의 FreeBSD와 같은 디렉토리 내용 읽기를 허용할 수도 있습니다. 그러나 이것들에 대해서도 아마도 readdir().

대부분의 유틸리티는 일반 파일처럼 디렉토리를 읽으려고 시도하므로 오류가 발생하지만 Vim과 같은 스마트 편집기 및 less일부 스크립트는 대신 디렉토리 시스템 호출을 사용하여 텍스트 목록을 생성합니다.

ext2/ext3/ext4 와 같은 특수 도구를 사용하여 debugfs일부 디렉토리 편집을 수행 할 수 있습니다. 하지만 내 생각에는 원시 데이터의 임의 편집도 허용하지 않는 것 같습니다. 이는 디렉터리 액세스 오류나 파일 시스템 드라이버 충돌에 대한 레시피처럼 들립니다.

관련 정보