-3

我有这个文件:

/root/.aria2/aria2.txt

我想把它移到:

/var/spool/sms/outgoing/aria2_XXXXX

请注意,XXXXX 是随机字符。

我如何仅使用openwrt(用于嵌入式设备的 GNU/Linux 发行版)和ashshell 公开的设施来做到这一点?

4

3 回答 3

1

在 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}
于 2014-12-20T06:20:13.370 回答
0

使用tempfile命令

mv aria2.txt `tempfile -d $dir -p aria2`

看到man tempfile血淋淋的细节。

于 2014-12-20T09:07:29.397 回答
0

在您的系统上,/dev/random您可以获得一串随机的 ASCII 字符,例如

dd if=/dev/random count=1 |
tr -dc ' -~' |
dd bs=8 count=1

在第二个实例中将设置bs=为您想要的字符数。

两次获得相同结果的概率非常低,但您没有告诉我们什么是可接受的范围。您应该了解(或帮助我们帮助您了解)您的场景中可接受的概率。

于 2014-12-20T08:58:14.790 回答