1. ホーム
  2. unix

[解決済み] unix シェルでランダムなファイル名を生成する

2023-06-26 18:57:37

質問

unixシェル(tcshell)でランダムなファイル名を生成したいです。ファイル名はランダムな32の16進文字で構成されている必要があります、例えば。

c7fdfc8f409c548a10a0a89a791417c5

(といった具合です(これに必要なものは何でも追加します)。要は、プログラムに頼らずシェルだけで出来るということです。

解決方法は?

linuxであれば、以下のようになります。

cat /dev/urandom | tr -cd 'a-f0-9' | head -c 32

これは、システムがエントロピー不足の場合にのみ擬似ランダムとなりますが、(linuxでは)終了が保証されています。 本当にランダムなデータが必要な場合は、cat /dev/random の代わりに /dev/urandom . この変更により、本当にランダムな出力を生成するのに十分なエントロピーが利用可能になるまでコードがブロックされるため、コードの速度が低下する可能性があります。 ほとんどの用途では /dev/urandom の出力は十分にランダムです。

OS Xや他のBSDを使用している場合は、以下のように修正する必要があります。

cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32