私はこのファイルを持っています:
/root/.aria2/aria2.txt
そして、私はそれを次の場所に移動したい:
/var/spool/sms/発信/aria2_XXXXX
XXXXX はランダムな文字であることに注意してください。
openwrt
(組み込みデバイス用の GNU/Linux ディストリビューション) とash
シェルによって公開されている機能のみを使用して、これを行うにはどうすればよいですか?
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}
システムで/dev/random
は、次のようなランダムなASCII文字の文字列を取得できます
dd if=/dev/random count=1 |
tr -dc ' -~' |
dd bs=8 count=1
2 番目のインスタンスの を必要な文字数に設定しbs=
ます。
同じ結果が 2 回得られる可能性は非常に低いですが、許容範囲を教えてくれませんでした。シナリオで許容できる確率を理解する必要があります (または、私たちが理解できるように支援する必要があります)。
tempfile
コマンドを使用する
mv aria2.txt `tempfile -d $dir -p aria2`
詳細については、を参照man tempfile
してください。