BSD jotを使用して任意のコンテンツでファイルを生成する

BSD jotを使用して任意のコンテンツでファイルを生成する

から引用BSD Choateの使用

ほとんどのLinuxシステムには、一連の数字または文字を生成するユーティリティであるGNU seqが付属しています。しかし、古い、より柔軟なユーティリティは、利用率が低く、未知のユーティリティです。 MacOS Xを含むすべてのBSDシステムにはjot(seqではない)が付属しています。

(...)

実際に大容量ファイル(この場合は5 GB)を生成するには、次のようにします。

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

これを試みると、5MBファイルが生成されます。

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

このコマンドの役割は正確に何ですか?たとえば、2GBファイルなどのサイズを指定する方法は?これがmacOSでランダムなコンテンツファイルを生成するのに推奨される方法ですか?任意のコンテンツファイルを処理するために他のツールを使用しますか?

seqランダムなコンテンツを作成できません。そうですか?

答え1

例は少し間違っていますが、結果は正しいです。説明します。

$(( 1024 * 1024 * 5 ))単純な製品ですが、シェル環境でのみ実行できますsh。たとえば、

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

このセクションは再びソートされますjot。これは-r「ランダムデータ」であり、ファイル内で見つける必要があります。

Theは、-c使用されているものと同じものの略語です-w %c%cこれが何を意味するのかはよく分からないが(回答については、Bob Eagerのコメントをご覧ください。)、任意のデータバイトを生成するようです。-cファイルを置き換えると同じサイズのファイルが得られますが、重複したコンテンツのみが-b x含まれます。x

以下は、-s ''ラインリターンがないことを意味します。これがなければ、各文字(または任意のデータ)の後にキャリッジリターンがあります。ファイルサイズも倍にする必要があります。

次の部分はです$(( 1024 * 1024 * 5 ))。生成される「データ」の量。上記のように、これは5242880ファイルサイズに末尾の行に返された1バイトを加えた数字(ただし5MiB)を生成します。たとえば、

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

関連情報