답변:
if=
필요하지 않습니다. dd
대신 무언가를 파이프로 넣을 수 있습니다 .
something... | dd of=sample.txt bs=1G count=1
openssl rand
어쨌든 바이트 수를 지정해야하므로 여기 에서는 유용하지 않습니다 . 그래서 당신은 실제로 필요하지 않습니다 dd
- 이 작동합니다 :
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
1 기가 바이트는 일반적으로 2 30 바이트입니다 ( 대신 10**9
10 9 바이트에 사용할 수 있음 ). 이 * 3/4
부품은 Base64 오버 헤드를 고려하여 인코딩 된 출력을 1GB로 만듭니다.
또는을 사용할 수 /dev/urandom
있지만 OpenSSL보다 약간 느립니다.
dd if=/dev/urandom of=sample.txt bs=1G count=1
개인적으로, 나는 사용 bs=64M count=16
하거나 비슷합니다.
dd if=/dev/urandom of=sample.txt bs=64M count=16
dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.
dd
에서 750,000,000 바이트를 읽어 /dev/urandom
파이프에 넣습니다 uuencode
. uuencode
입력을 base64 인코딩 형식으로 인코딩합니다 (다른 프로그램과 반드시 일치 할 필요는 없음). 즉, 이진 데이터를 텍스트로 변환합니다. 나는 base64 인코딩이 데이터를 33 %% 확장한다는 grawity의 진술을 믿었 기 때문에 750M을 사용했기 때문에 텍스트 파일에서 원하는만큼의 2 진 데이터를 요구해야한다.
dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
을 만들 것이라고 말하면 플래그를 추가하면 작동합니다. iflag=fullblock
이 스크립트를 사용해보십시오.
#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1
이 스크립트는을 사용하지 않는 한 작동 할 수 있습니다 /dev/random
.
#!/bin/bash
dd if=/dev/random of="sample.txt bs=1G count=1"
/dev/random
그럴만한 이유가없는 한 이것을 낭비하지 않는 것이 좋습니다 . /dev/urandom
훨씬 저렴합니다.
$var=(command)
이 문맥에서 유효한 구문이 아닙니다.
random=$(openssl rand -base64 1000)
. bash
기가 바이트 길이의 값을 변수에 할당 할 수 있는지 여부는 의문 입니다. 그리고 당신이 말하더라도 random=$(openssl rand -base64 1000)
, 그 이후의 말 if=$random
은 의미가 없습니다.
/dev/urandom
하면 실제 텍스트 파일이 아닌 이진 파일 을 생성하는 것이 좋습니다 .