에서 인용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