我的服务器中有一个别名,/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?)
我正在设置一些东西 - 究竟什么可能无关紧要。
无论如何,我从我的应用程序中得到一个错误,表明 /dev/random 和 /dev/urandom 是需要的,但丢失了。
所以我从拥有它们的 Linux 版本中复制了它们,然后一切正常。
这个可以吗?因为我这样做可能会出现什么问题?如果这不行,是否有“正确”的方法来创建 /dev/random 和 /dev/urandom?
环境:
什么是已知的:
RANDOM 通过以下方式给出一个 15 位范围内的随机数:
echo $RANDOM
Run Code Online (Sandbox Code Playgroud)
SRANDOM 通过以下方式给出 32 位范围内的随机数:
echo $SRANDOM
Run Code Online (Sandbox Code Playgroud)
RANDOM 可以通过以下方式配置为在 30 位范围内创建随机数:
my_rnd=$(((RANDOM<<15|RANDOM)))
echo "$my_rnd"
Run Code Online (Sandbox Code Playgroud)
RANDOM 可以通过以下方式配置为在 45 位范围内创建随机数:
my_rnd=$(((RANDOM<<15|RANDOM)<<15|RANDOM))
echo "$my_rnd"
Run Code Online (Sandbox Code Playgroud)
如何配置RANDOM以获得与使用时相同的 32 位随机数范围SRANDOM?
好吧,这听起来像是一个奇怪的请求,但它确实有一个很好的目的!我有一台带 SD 卡插槽的松下等离子电视,通过它我可以显示 JPEG 照片的幻灯片。这对于防止烧屏很有用,如果我在做饭时离开电视片刻,或者如果我接电话,或者其他什么,只需开始幻灯片放映即可防止出现静态图像,并且在我做其他事情的时候也让我看看照片。
问题是幻灯片总是按字母顺序从第一张照片开始,这意味着我总是看到相同的图像并且永远不会结束。我想做的是在我的 Unix 机器上有一个脚本,我可以在 SD 卡上运行/media/sdcard它(安装在),并让它随机化该目录下所有文件的名称。不会真的不管它是如何随机化他们,但我更喜欢纯数字名称(原因不明)
有没有简单的方法来实现这一点?像find /media/sdcard -exec mv {} rand() \;什么?
对于奖励积分,有什么方法可以防止脚本在发生冲突时覆盖两个文件?这些是照片的副本,所以如果我丢失了一张我仍然有原件,但这仍然不方便......
我正在创建一个密码生成器,但是我没有得到正确附加的密码。
这是我的脚本
i="0"
while [ $i -lt 5 ]
do
echo -n '#' >> passwords.txt && openssl rand -hex 4 >> passwords.txt && echo -n '/' >> passwords.txt && echo -n 'X' >> passwords.txt
i=$[$i+1]
done
Run Code Online (Sandbox Code Playgroud)
输出
#b887e0d0
/X#7093289e
/X#2210cfcd
/X#fd175e1f
/X#0c18fc9e
/X
Run Code Online (Sandbox Code Playgroud)
预期产出
#b887e0d0/Z
#7093289e/Z
#2210cfcd/Z
#fd175e1f/Z
#0c18fc9e/Z
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它不跳过第一行,并使其按该顺序运行每个命令并将写入密码txt文件作为预期输出。
谢谢。
假设我有一个文件夹,里面有很多文件名,我想把它重命名为
File-1
File-2
File-3
..
Run Code Online (Sandbox Code Playgroud)
我试过这个(回声是为了尝试)
for name in *; do echo mv $name File-`echo $(( RANDOM % (10 - 5 + 1 ) + 1 ))`;done
Run Code Online (Sandbox Code Playgroud)
但给我很多重复
mv bio1 file-3
mv memory23 file-1
mv mernad file-3
mv nio2 file-4
mv nun3 file-4
Run Code Online (Sandbox Code Playgroud) 我有这个脚本从定义的字符列表中生成 $1 位的混合随机字符作为数组。
#!/bin/bash
charlist1=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
charlist2=(0 1 2 3 4 5 6 7 8 9)
charlists=(${charlist1[*]} ${charlist2[*]})
i="1"
while [ $i -le $1 ]; do
out=$out`echo -n ${charlists[$(($RANDOM % ${#charlists[*]}))]}`
i=$(( i + 1 ))
done
echo $out
Run Code Online (Sandbox Code Playgroud)
它在 bash 中运行良好,但是如果我用 zsh 调用它,zsh that_script_above.sh 6它只会生成 6 位相同字符的数字,如下所示:
>>> zsh that_script_above.sh 6
llllll
>>> …Run Code Online (Sandbox Code Playgroud) $ nmap -n -iR 0 -sL > RANDOM-IPS-TMP.txt
$ grep -o "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" RANDOM-IPS-TMP.txt |
egrep -v "10.*|172.[16-32].*|192.168.*|[224-255].*" > RANDOM-IPS.txt
egrep: Invalid range end
$
Run Code Online (Sandbox Code Playgroud)
如何在私有 IP 地址范围和多播 IP 地址范围之外生成随机 IP 地址?
我最近创建了一个测试文件,因为我想玩弄 logrotate。我正在寻找一种解决方案来创建我想要的任何大小的文件。我发现这是我的解决方案:
dd if=/dev/zero of=/path bs=1M count=30 status=progress
Run Code Online (Sandbox Code Playgroud)
我也发现了这个:
dd if=/dev/urandom of=/path bs=1M count=30 status=progress
Run Code Online (Sandbox Code Playgroud)
第一个示例创建一个带有零的文件,第二个带有随机文本的文件。这两个文件的大小相同,均为 30M。
谁能解释一下,为什么用随机文本创建这个文件比用零创建这个文件需要更长的时间?因为它们都有相同大小的数据......
提前致谢 :)
长话短说:
程序同时启动两次时会抽取相同的随机种子。它是怎么发生的?
细节
我正在运行 MCMC 统计分析,因此我执行程序 (phylobayes) 两次以获得2 个独立的重复。
为此,我的 shell 脚本分离每个复制运行,如下所示(示意性地):
pb -d "inputdata" "replicate1" &
pid1=$!
pb -d "inputdata" "replicate2" &
pid2=$!
wait "$pid1"
wait "$pid2"
Run Code Online (Sandbox Code Playgroud)
(然后,使用 slurm 将这个脚本提交到计算集群(Debian 10))sbatch。
但我的许多运行(例如 30%)都是从相同的随机种子开始的!如日志文件所示。
Phylobayes使用 C++Random::initRandom()命令。[编辑:实际上,正如指出的那样,该函数在包内有一个自定义定义]。
从技术上讲,是否可以采用相同的随机种子?它使用 /dev/random 还是 /dev/urandom ?
sleep如果是,我将在开始之间插入一个命令;
如果没有,我必须明白我犯了什么愚蠢的错误,但我不知道它会是什么......