ファイル(任意のコンテンツ)を作成したいのですが、その中には1MBの大きな行が1つしかありません。
このコマンドを試しましたが、うまくいきません。
head -n 1 -c 1m /dev/urandom > /sdcard/file.txt
正しいことは何ですか?
私は、任意の1MBのデータを1行に含むファイルが欲しい。
答え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