한 줄만 사용하여 특정 길이의 임의 파일 만들기

한 줄만 사용하여 특정 길이의 임의 파일 만들기

파일(임의의 콘텐츠)을 생성하고 싶지만 그 안에는 1MB의 큰 줄이 하나만 있습니다.

이 명령을 사용해 보았지만 작동하지 않습니다.

head -n 1 -c 1m /dev/urandom > /sdcard/file.txt 

옳은 일은 무엇입니까?
나는 임의의 1MB 데이터를 한 줄에 포함하는 파일을 원합니다.

답변1

{ tr -d '\n' </dev/urandom | head -c 1m; printf '\n'; } >/sdcard/file.txt

GNU를 가정하면 head개행 문자 없이 1MB의 (대부분 이진, 인쇄 불가능) 데이터가 필요 /dev/urandom하고 끝에 개행이 추가됩니다. 출력은 에 저장됩니다 /sdcard/file.txt. 이 "줄"은 null 바이트를 포함할 가능성이 높으므로 올바른 텍스트 줄이 아닙니다.

영숫자 데이터만 원하는 경우

{ tr -dc '[:alnum:]' </dev/urandom | head -c 1m; printf '\n'; } >/sdcard/file.txt

이렇게 하면 임의 스트림에서 영숫자가 아닌 모든 문자가 제거되고 /dev/urandom1MB로 잘린 다음 이전과 같이 개행 문자가 추가됩니다.

답변2

  • 에서 읽어보세요 /dev/urandom.
  • 줄 바꿈, 널 바이트, 기타 제어 문자 등과 같이 줄에서 원하지 않는 문자를 필터링합니다.
  • 원하는 바이트 또는 문자 수에서 중지합니다.
  • 줄 바꿈을 추가합니다.

예를 들어, 1,000,000개의 ASCII 인쇄 가능 문자를 가지려면 다음을 수행하십시오.

{ </dev/urandom \
  LC_ALL=C tr -dc ' -~' |
  head -c 1000000 &&
  echo
} >/sdcard/file.txt 

관련 정보