引用自使用 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 ))
只是一个产品,但只能在sh
shell环境下运行。例如:
sh
echo $(( 1024 * 1024 * 5))
5242880
该部分已排序,回到jot
。这-r
是“随机数据”,这应该是您在文件中找到的内容。
the-c
是 的简写,与使用 相同-w %c
。虽然我不太确定这%c
意味着什么(请参阅下面 Bob Eager 的评论以获得答案),它似乎确实产生了一个字节的随机数据。您可以交换-c
for -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