Shell

使用 BSD jot 生成具有隨機內容的文件

  • April 2, 2017

引用使用 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無法生成隨機內容。它是否正確?

範例稍有錯誤,結果是正確的。讓我解釋。

$(( 1024 * 1024 * 5 ))只是一個和,但它只能在shshell環境下工作。例如:

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

那部分排序,回到jot. 這-r是“隨機數據”,這應該是您在文件中找到的內容。

-c簡寫,與使用相同-w %c。雖然我不確定是什麼%c意思,但它似乎確實產生了一個字節的隨機數據。你可以換掉-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

引用自:https://unix.stackexchange.com/questions/355370