使用 BSD jot 生成具有随机内容的文件

使用 BSD jot 生成具有随机内容的文件

引用自使用 BSD 乔特

大多数 Linux 系统都附带 GNU seq(一种生成数字或字符序列的实用程序)。然而,一种更古老且更灵活的实用程序是未充分利用且未知的实用程序 jot。每个 BSD 系统,包括 MacOS X,都会附带 jot(而不是 seq)。

(...)

事实上,要生成大文件(本例中为 5Gb),请尝试以下操作:

jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5gb

当我尝试这个时,它会生成一个 5 MB 的文件。

$ jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5gb
$ du -sh file.5gb
5.0M    file.5gb

这个命令到底是做什么的?如何指定大小,例如 2 GB 文件?这是在 macOS 上生成随机内容文件的推荐方法吗?您是否使用其他工具来处理随机内容文件?

seq无法生成随机内容。它是否正确?

答案1

例子有一点错误,结果是正确的。让我解释。

$(( 1024 * 1024 * 5 ))只是一个产品,但只能在shshell环境下运行。例如:

sh
echo $(( 1024 * 1024 * 5))
5242880

该部分已排序,回到jot。这-r是“随机数据”,这应该是您在文件中找到的内容。

the-c是 的简写,与使用 相同-w %c。虽然我不太确定这%c意味着什么(请参阅下面 Bob Eager 的评论以获得答案),它似乎确实产生了一个字节的随机数据。您可以交换-cfor -b x,您将获得相同大小的文件,但它只会包含x重复的内容。

接下来是-s ''这意味着没有线路返回。如果没有这个,每个字符(或随机数据)后都会有一个回车符。您的文件也应该是两倍大。

下一部分是$(( 1024 * 1024 * 5 ))。这是要产生的“数据”量。如上所示,这会产生数字5242880(仅为 5MiB),这就是文件的大小加上尾随行返回的 1 个字节。例如:

sh
jot -r -c -s '' $(( 1024 * 1024 * 5 )) > file.5mb
ls -al file.5mb
-rw-r--r--  1 tigger  tigger  5242881  2 Apr 15:39 file.5mb

相关内容