find 명령의 목적은 기본 크기 단위인 512바이트입니다.

find 명령의 목적은 기본 크기 단위인 512바이트입니다.

find명령을 사용하면 크기별로 검색할 수 있으며 man페이지에 명시된 단위를 사용하여 크기를 지정할 수 있습니다.

File uses n units of space.  The following suffixes can be used:
  `b'    for 512-byte blocks (this is the default if no suffix is used)
  `c'    for bytes
  `w'    for two-byte words
  `k'    for Kilobytes (units of 1024 bytes)
  `M'    for Megabytes (units of 1048576 bytes)
  `G'    for Gigabytes (units of 1073741824 bytes)

b더 일반적인 가정인 "바이트" 대신 "블록"을 선택하는 역사적 이유가 있습니까? 바이트 대신 블록이 기본값인 이유는 무엇입니까? 누군가가 언제, 왜 이 장치를 사용하고 싶어할까요? 바이트/킬로바이트로 변환하려면 약간의 계산이 필요하며 기본 단위로는 불편한 것 같습니다.

답변1

Unix의 첫 번째 버전은 파일 시스템과 디스크 드라이버에서 512바이트 블록을 사용했습니다. Unix는 구현을 밀접하게 따르는 인터페이스와 블록 크기와 같이 추상적으로 남아 있어야 하는 세부 정보를 유출하는 매우 최소한의 저수준 시스템으로 시작했습니다. 이것이 바로 블록 크기가 다를 수 있고 특정 파일에 적용되는 블록 크기도 다를 수 있음에도 불구하고 오늘날 "블록"이 여전히 많은 상황에서 512바이트를 의미하는 이유입니다(파일 시스템용, 볼륨 관리 드라이브용, 볼륨 관리 드라이브용, 볼륨 관리자의 경우) 디스크...).

구현에서는 파일에 할당된 데이터 블록 수를 계산하여 디스크 사용량을 추적하므로 파일 크기를 블록 수로 쉽게 보고할 수 있습니다. 디스크 사용량과 파일 크기는 일반적으로 디스크 사용량이 정수 블록 크기로 반올림되기 때문에 다를 수 있습니다.스파스 파일일반적으로 필요한 것보다 작은 청크를 갖습니다. 내가 아는 한, 희소 파일을 구현한 초기 Unix 시스템은 find -size파일 크기 대신 파일이 사용하는 블록 수를 사용했습니다.POSIX 사양).

초기 find구현에서는 마지막 몇 블록만 허용했습니다 -size. 어느 시점에서 접미사는 일부를 나타 내기 위해 find -size받아 들여지기 시작했습니다.c블록 대신 문자를 사용하는 것입니다. 누가 시작했는지 모르겠지만 여기에 문제가 있습니다.4.3BSD. 나중에 다른 접미사가 나타났습니다. 예를 들어 FreeBSD에서는 다음과 같습니다.버전 6.2k, M기타 접미사가 도입되었지만 bGNU 및 BusyBox find에만 존재하는 것 같습니다.

역사적으로 많은 프로그램에서는 "문자"와 "바이트"를 같은 의미로 사용했으며 "문자"라는 용어를 선호하는 경향이 있었습니다. 예를 들어 wc -c바이트 수를 계산합니다. 멀티바이트 문자에 대한 지원 및 그에 따른 바이트 수와 구별되는 문자 수는 비교적 새로운 현상입니다.

결론부터 말하면 목적이 없습니다. 512바이트라는 블록 크기와 기본 단위라는 사실, 그리고 이 문자를 사용한 것은 b의도적인 것이 아니라 역사적 우연의 결과이다.

답변2

블록은 바이트보다 더 중요합니다. 파일은 처음부터 지정된 수의 블록을 사용하기 때문입니다.조각대신에바이트파일 시스템에서. 1바이트 파일은 여전히 ​​디스크에서 한 블록을 차지합니다.

예를 들어find(1)Unix Sixth Edition의 매뉴얼 페이지에는 다음과 같이 나와 있습니다.

-size n         True if the file is n blocks long (512 bytes
                 per block).

매뉴얼 페이지는 다른 치수 측정 단위를 표시하는 편리한 방법을 제공하지 않습니다.

POSIX는 설명에 명확하게 명시되어 있습니다.find512바이트 블록을 사용합니다.

-size 체크 안함]
파일 크기(바이트)를 512로 나누고 n으로 반올림하면 기본 용어는 true로 평가됩니다. n 뒤에 문자 "c"가 오는 경우 크기는 바이트 단위여야 합니다.

일부 구형 시스템에서는 다음과 같습니다.HPUX 10.20매뉴얼 페이지에는 명확하게 명시되어 있지 않습니다.

관련 정보