我想在unix shell(比如tcshell)中生成一个随机文件名。文件名应由随机的 32 个十六进制字母组成,例如:
c7fdfc8f409c548a10a0a89a791417c5
(我将添加任何必要的内容)。重点是能够仅在 shell 中完成此操作,而无需借助程序。
最佳答案
假设您使用的是 Linux,以下内容应该可以工作:
cat /dev/urandom | tr -cd 'a-f0-9' | head -c 32
如果你的系统运行时熵较低,这只是伪随机的,但(在 Linux 上)保证会终止。如果您需要真正的随机数据,请使用 /dev/random
而不是 /dev/urandom
。此更改将使您的代码阻塞,直到有足够的熵可产生真正的随机输出,因此可能会减慢您的代码。对于大多数用途,/dev/urandom
的输出足够随机。
如果您使用的是 OS X 或其他 BSD,则需要将其修改为以下内容:
cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32
关于unix - 在 unix shell 中生成随机文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793812/