파일(임의의 콘텐츠)을 생성하고 싶지만 그 안에는 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/urandom
1MB로 잘린 다음 이전과 같이 개행 문자가 추가됩니다.
답변2
- 에서 읽어보세요
/dev/urandom
. - 줄 바꿈, 널 바이트, 기타 제어 문자 등과 같이 줄에서 원하지 않는 문자를 필터링합니다.
- 원하는 바이트 또는 문자 수에서 중지합니다.
- 줄 바꿈을 추가합니다.
예를 들어, 1,000,000개의 ASCII 인쇄 가능 문자를 가지려면 다음을 수행하십시오.
{ </dev/urandom \
LC_ALL=C tr -dc ' -~' |
head -c 1000000 &&
echo
} >/sdcard/file.txt