IISomeOneII Asked: 2019-09-06 02:40:57 +0800 CST2019-09-06 02:40:57 +0800 CST 2019-09-06 02:40:57 +0800 CST 仅在一行中创建随机文件但具有特定长度 772 我想制作一个文件(随机内容),但里面只有一个 1 MB 的大行 我试过使用这个命令,但它没有用: head -n 1 -c 1m /dev/urandom > /sdcard/file.txt 如何正确地做到这一点? 我只想要一个包含随机 1 MB 数据但仅在一行中的文件。 files random 2 个回答 Voted Best Answer Kusalananda 2019-09-06T02:51:23+08:002019-09-06T02:51:23+08:00 { tr -d '\n' </dev/urandom | head -c 1m; printf '\n'; } >/sdcard/file.txt 假设 GNU head,这将获得一兆字节(很可能是二进制,不可打印)的数据,/dev/urandom其中没有任何换行符,然后在末尾添加一个换行符。输出将保存到/sdcard/file.txt. 这个单一的“行”将不是一个正确的文本行,因为它很可能包含 nul 字节。 如果您只想要字母数字数据, { tr -dc '[:alnum:]' </dev/urandom | head -c 1m; printf '\n'; } >/sdcard/file.txt 这将从 中删除随机流中的所有非字母数字字符,将/dev/urandom其截断为 1 MB,然后像以前一样添加换行符。 Gilles 'SO- stop being evil' 2019-09-06T02:52:23+08:002019-09-06T02:52:23+08:00 从 读取/dev/urandom。 过滤掉您不想在行中包含的字符,例如换行符、空字节、任何其他控制字符等。 在所需的字节数或字符数处停止。 添加换行符。 例如,要拥有 1,000,000 个 ASCII 可打印字符: { </dev/urandom \ LC_ALL=C tr -dc ' -~' | head -c 1000000 && echo } >/sdcard/file.txt
假设 GNU
head
,这将获得一兆字节(很可能是二进制,不可打印)的数据,/dev/urandom
其中没有任何换行符,然后在末尾添加一个换行符。输出将保存到/sdcard/file.txt
. 这个单一的“行”将不是一个正确的文本行,因为它很可能包含 nul 字节。如果您只想要字母数字数据,
这将从 中删除随机流中的所有非字母数字字符,将
/dev/urandom
其截断为 1 MB,然后像以前一样添加换行符。/dev/urandom
。例如,要拥有 1,000,000 个 ASCII 可打印字符: