如何在配置文件别名中生成随机字符串?

Afr*_*Afr 2 shell alias quoting random

我的服务器中有一个别名,/etc/profile它根据命令生成一个随机目录,如下所示:

alias rdir="mkdir -p ./`cat /dev/random | tr -cd 'a-z0-9' | head -c 8`/"
Run Code Online (Sandbox Code Playgroud)

但事实证明这总是生成相同的字符串(在这种情况下:目录)。我已经发现这似乎与source'ing 配置文件有关,并且只在我调用source /etc/profile.

现在,我想知道,如何在别名中生成一个随机字符串,当我调用别名时,它总是会改变,就像在这个例子中一样:rdir?(没有重新source-ing?)

cha*_*aos 7

使用单引号代替双引号:

alias rdir='mkdir -p ./$(cat /dev/urandom | tr -cd 'a-z0-9' | head -c 8)/'
Run Code Online (Sandbox Code Playgroud)

现在,每次调用别名时都会评估该语句。在定义别名时,使用双引号对语句进行评估,因此是静态的。

在当前工作目录中创建随机目录的更简单的解决方案是使用mktemp

alias rdir='mktemp -d --tmpdir=./'
Run Code Online (Sandbox Code Playgroud)