从生成的哈希输出中创建目录

时间:2015-11-27 19:11:24

标签: bash random hash

这个bash命令生成一个简短的哈希,我想用它来命名用mkdir创建的目录:

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

我认为:

  1. 创建random-ish号码
  2. 使用tr(翻译)
  3. 限制字符集
  4. Folds /将每行输出包装为32个字符
  5. 将输出限制为从head
  6. 开始的一行

    我可以简单地复制此命令的输出并将其粘贴到mkdir命令中,但如何在单个命令中完成?

    我尝试添加| mkdir| mkdir -p然后结束,以为我可以将输出传递给mkdir

3 个答案:

答案 0 :(得分:1)

使用command substitution将一个命令的输出插入另一个命令

mkdir $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)

某些程序,例如mkdirrm,因此您无法将stdin传递给它们。您还可以使用xargs将stdin传递给命令

答案 1 :(得分:1)

mkdir没有在它的stdin上查找目录名,这就是| mkdir无效的原因。

@ Rozuur的答案很简单。

另一种选择是使用xargs

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 | xargs mkdir

xargs从stdin读取行,作为参数附加到给定命令。

答案 2 :(得分:1)

使用mktemp

mktemp -d `printf "%0.sX" {1..32}`

这里printf生成模板字符串,重复32次'X'字符(比起@glennjackman提示)