我的服务器中有一个别名,/etc/profile
它会根据命令生成一个随机目录,如下所示:
alias rdir="mkdir -p ./`cat /dev/random | tr -cd 'a-z0-9' | head -c 8`/"
但事实证明这总是生成相同的字符串(在本例中:目录)。我已经发现这似乎与source
配置文件有关,并且仅在我调用后生成一个新的随机字符串source /etc/profile
。
现在,我想知道如何在别名中生成一个随机字符串,当我调用别名时,该字符串总是会发生变化,如下例所示:rdir
? (不重新source
--ing?)
答案1
使用单引号代替双引号:
alias rdir='mkdir -p ./$(cat /dev/urandom | tr -cd 'a-z0-9' | head -c 8)/'
现在,每次调用别名时都会评估该语句。在定义别名时,使用双引号对语句进行评估,因此是静态的。
在当前工作目录中创建随机目录的更简单的解决方案是使用mktemp
:
alias rdir='mktemp -d --tmpdir=./'
答案2
您还可以使用ing 和filteringpwgen
代替:cat
/dev/random
alias mkranddir='mkdir $(pwgen -s 8 1)'