这个bash命令生成一个简短的哈希,我想用它来命名用mkdir
创建的目录:
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
我认为:
我可以简单地复制此命令的输出并将其粘贴到mkdir
命令中,但如何在单个命令中完成?
我尝试添加| mkdir
和| mkdir -p
然后结束,以为我可以将输出传递给mkdir
。
答案 0 :(得分:1)
使用command substitution将一个命令的输出插入另一个命令
mkdir $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
某些程序,例如mkdir
和rm
,因此您无法将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提示)