나는 실제로 하나의 파일 또는 둘 이상의 파일을 포함하는 모든 파일을 설명하기 위해 "컨테이너 파일"이라는 용어를 사용합니다. 몇 가지 예는 다음과 같습니다타르 아카이브또는목차.
일부 아카이브 GUI 소프트웨어로 tar 아카이브 파일을 열거나 일부 GUI OS 파일 브라우저로 디렉토리를 연다고 가정해 보겠습니다. 두 경우 모두 실제로는 하나의 파일이거나 두 개 이상의 파일입니다.포함하다컨테이너 파일에 나타납니다(처음에는 가장 기본적인 깊이 - "추가 깊이"를 고려하지 않음).
일반적으로 Unix 및 Linux 시스템에서 이러한 파일의 깊이는 얼마나 됩니까? 깊이가 0인가요, 아니면 깊이 1인가요?
답변1
귀하의 질문에 답하기 위해 명령에서 깊이 사용법을 인용하겠습니다 find
. 이 플래그를 사용하여 --maxdepth
특정 파일을 찾을 수 있는 최대 깊이를 정의할 수 있습니다. 이제 다음 구조의 디렉터리(또는 일반적으로 docker와 관련되어 있지만 컨테이너 파일)에 있는 경우
.
└── dir1
└── file1
(이것은 tree 명령의 출력입니다.) 실행하면 find -maxdepth 0
. .
대신에 실행하면 find -maxdepth 1
현재 있는 디렉토리의 실제 내용을 얻게 됩니다 ./dir1
. , ./dir1/file1
하지만 이것은 이미 분명합니다.
요약하자면, 현재 있는 디렉터리에는 깊이가 0이 아닌 1인 파일이 포함되어 있습니다.
답변2
이 질문은 용어에 대해 묻는 것 같습니다. 조심해야 하는 것이 맞습니다. "깊이"라는 단어는 까다로울 수 있으며 나는 항상 그것을 사용하기 전에 내 자신의 논리를 확인하고 있습니다.
답이 1인 이유(그리고 1인 이유)를 이해하려면 0 또는 1에서 색인을 생성하는 결정이 임의적이지 않다는 점을 이해해야 합니다. 실제로는 완전히 다른 두 가지를 설명합니다. 설명하려면 몇 가지 색상(빨간색, 파란색, 보라색)이 포함된 목록을 생각해 보세요. 이 목록을 두 가지 방법으로 논의할 수 있습니다.
- 목록에서:1st는 빨간색이고,2nd는 파란색이고,삼rd는 보라색이에요. 1부터 명시적으로 인덱싱 시작
- 보라색은2목록의 처음부터 파란색은1목록의 시작 부분과는 거리가 먼 빨간색이 목록의 시작 부분입니다.0. 인덱스는 0부터 시작합니다.
컴퓨터 과학에서는 오프셋(0 기반 인덱싱)을 사용하는 것이 많은 수학적 연산을 더 쉽게 프로그래밍할 수 있게 해주기 때문에 선호됩니다. 그러나 우리는 단지 "처음부터 색인을 생성"하는 것이 아니라 뭔가 다른 것을 설명하고 있다는 점을 이해하는 것이 중요합니다.
0 기반 인덱싱은 (실제로는)항상 오프셋이 있습니다., 팬텀 제로가 있더라도.
용어 로 find
find는 현재 디렉터리에 대한 오프셋으로 0부터 인덱싱을 시작합니다. 즉, -maxdepth 1
현재 디렉터리부터 레벨 1을 탐색한다는 의미입니다. 다시 말하지만 find . -maxdepth 0
이는 .
현재 디렉터리에서 시작하고 아무것도 확장하지 않기 때문입니다.
이 논의 전에는 깊이 0을 찾는 것에 대해 생각해 본 적이 없을 것입니다. 0은 유령입니다(그리고 실제로는 쓸모가 없습니다).
다음으로, 컨테이너 측면에서 깊이 0은 zip 파일이 확장되지 않음을 의미합니다. 이는 컨테이너가 전혀 없다는 것을 의미합니다. 단일 레이어(다른 파일은 포함하지만 다른 zip은 포함하지 않는 zip)의 깊이는 컨테이너 외부에서 시작하고 파일을 추출하려면 컨테이너를 확장해야 하기 때문에 항상 깊이 1입니다.