Saya menggunakan bash shell dan ingin menyalurkan keluar dari perintah openssl rand -base64 1000
ke perintah dd
seperti dd if={output of openssl} of="sample.txt bs=1G count=1
. Saya pikir saya bisa menggunakan variabel tetapi saya tidak yakin bagaimana cara terbaik untuk melakukannya. Alasan saya ingin membuat file adalah karena saya ingin file 1GB dengan teks acak.
88
/dev/urandom
menghasilkan file biner dan bukan file teks yang sebenarnya.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.dd
Membaca 750.000.000 byte dari/dev/urandom
dan menyalurkannya keuuencode
.uuencode
mengkodekan inputnya ke dalam bentuk pengkodean base64 (tidak harus konsisten dengan program lain). Dengan kata lain, ini mengubah data biner menjadi teks. Saya menggunakan 750M karena saya percaya pernyataan grawity bahwa pengkodean base64 memperluas data sebesar 33%, jadi Anda perlu meminta ¾ data biner sebanyak yang Anda inginkan dalam file teks Anda.dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
akan membuat file terpotong jadi tambahkaniflag=fullblock
benderanya, maka itu berfungsi.Buat file konten acak 1GB.bin:
sumber
iflag=fullblock
adalah tambahan yang diperlukan dibandingkan dengan jawaban lain.Jika Anda ingin PERSIS 1GB, maka Anda dapat menggunakan yang berikut ini:
openssl rand -out $ testfile -base64 792917038; truncate -s-1 $ testfile
Perintah openssl membuat file tepat 1 byte terlalu besar. Perintah truncate memotong byte itu.
sumber
-base64
. Menghapusnya akan menghasilkan file dengan ukuran yang benar.Coba skrip ini.
Skrip ini mungkin berfungsi selama Anda tidak keberatan menggunakan
/dev/random
.sumber
/dev/random
ini kecuali ada alasan yang sangat bagus untuk melakukannya./dev/urandom
jauh lebih murah.$var=(command)
bukan sintaks yang valid dalam konteks ini.random=$(openssl rand -base64 1000)
. Meskipun saya akan mempertanyakan apakahbash
akan membiarkan Anda menetapkan nilai gigabyte-panjang untuk suatu variabel. Dan bahkan jika Anda mengatakannyarandom=$(openssl rand -base64 1000)
, kalimat selanjutnyaif=$random
tidak masuk akal.