BSD jot을 사용하여 임의의 콘텐츠로 파일 생성

BSD jot을 사용하여 임의의 콘텐츠로 파일 생성

에서 인용BSD Choate 사용

대부분의 Linux 시스템에는 일련의 숫자나 문자를 생성하는 유틸리티인 GNU seq가 함께 제공됩니다. 그러나 오래되고 더 유연한 유틸리티는 활용도가 낮고 알려지지 않은 유틸리티입니다. MacOS X를 포함한 모든 BSD 시스템에는 jot(seq 아님)가 함께 제공됩니다.

(...)

실제로 대용량 파일(이 경우 5GB)을 생성하려면 다음을 시도하십시오.

jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5gb

이것을 시도하면 5MB 파일이 생성됩니다.

$ jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5gb
$ du -sh file.5gb
5.0M    file.5gb

이 명령의 역할은 정확히 무엇입니까? 예를 들어 2GB 파일과 같이 크기를 지정하는 방법은 무엇입니까? 이것이 macOS에서 임의의 콘텐츠 파일을 생성하는 데 권장되는 방법입니까? 임의의 콘텐츠 파일을 처리하기 위해 다른 도구를 사용합니까?

seq임의의 콘텐츠를 생성할 수 없습니다. 맞습니까?

답변1

예제가 약간 잘못되었지만 결과는 정확합니다. 설명하겠습니다.

$(( 1024 * 1024 * 5 ))단순한 제품이지만 쉘 환경에서만 실행될 수 있습니다 sh. 예를 들어:

sh
echo $(( 1024 * 1024 * 5))
5242880

이 섹션은 다시 로 정렬됩니다 jot. 이것은 -r"무작위 데이터"이며 파일에서 찾아야 하는 것입니다.

The 는 -c사용된 것과 같은 것의 약어입니다 -w %c. %c이것이 무엇을 의미하는지 잘 모르겠지만 (답변은 아래 Bob Eager의 의견을 참조하세요.), 임의의 데이터 바이트를 생성하는 것 같습니다. -c파일을 교체 하면 동일한 크기의 파일을 얻을 수 있지만 중복된 콘텐츠 -b x만 포함됩니다 .x

다음은 -s ''라인 리턴이 없다는 것을 의미합니다. 이것이 없으면 각 문자(또는 임의의 데이터) 뒤에 캐리지 리턴이 있게 됩니다. 파일 크기도 두 배는 되어야 합니다.

다음 부분은 입니다 $(( 1024 * 1024 * 5 )). 생성될 "데이터"의 양입니다. 위에 표시된 대로 이는 5242880파일 크기에 후행 줄에 대해 반환된 1바이트를 더한 숫자(단지 5MiB)를 생성합니다 . 예를 들어:

sh
jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5mb
ls -al file.5mb
-rw-r--r--  1 tigger  tigger  5242881  2 Apr 15:39 file.5mb

관련 정보