我有这个文件:
/root/.aria2/aria2.txt
我想把它移到:
/var/spool/sms/outgoing/aria2_XXXXX
请注意,XXXXX 是随机字符。
我如何仅使用openwrt
(用于嵌入式设备的 GNU/Linux 发行版)和ash
shell 公开的设施来做到这一点?
在 bash 中生成半随机数的一种简单方法是使用date +%N
提供的命令或系统$RANDOM
:
rn=$(date +%N) # Nanoseconds
rn=${rn:3:5} # to limit to 5 digits
或者,使用$RANDOM
,您需要检查是否有足够的数字用于您的目的。如果 5 是您需要的位数:
rn=$RANDOM
while [ ${#rn} -lt 5 ]; do
rn="${rn}${RANDOM}"
done
rn=${rn:0:5}
在提供随机后缀的同时移动:
mv /root/.aria2/aria2.txt /var/spool/sms/outgoing/aria2_${rn}
使用tempfile
命令
mv aria2.txt `tempfile -d $dir -p aria2`
看到man tempfile
血淋淋的细节。
在您的系统上,/dev/random
您可以获得一串随机的 ASCII 字符,例如
dd if=/dev/random count=1 |
tr -dc ' -~' |
dd bs=8 count=1
在第二个实例中将设置bs=
为您想要的字符数。
两次获得相同结果的概率非常低,但您没有告诉我们什么是可接受的范围。您应该了解(或帮助我们帮助您了解)您的场景中可接受的概率。