如何产生填充在外壳脚本的随机数或字符的随机文件?我也想指定文件的大小。

有帮助吗?

解决方案

使用dd命令来读取从/ dev /随机的。

的数据
dd if=/dev/random of=random.dat bs=1000000 count=5000

这将读取的随机数据的5000块大小为1MB,即一个整体5千兆字节的随机数据!

实验与块大小的参数,以获得最佳的性能。

其他提示

head -c 10 /dev/random > rand.txt

变化10到任何。读 “人随机” 用于之间的/ dev /随机和/ dev / urandom的差异。

或者,对于仅BASE64字符

head -c 10 /dev/random | base64 | head -c 10 > rand.txt

基于64位可能包括你没有兴趣的某些字符,但没来得及拿出一个更好的单衬字符转换器... (也我们从/ dev /随机的。对不起,熵池以字节太多!)

一个良好的开端将是:

http://linuxgazette.net/153/pfeiffer.html

#!/bin/bash
# Created by Ben Okopnik on Wed Jul 16 18:04:33 EDT 2008

########    User settings     ############
MAXDIRS=5
MAXDEPTH=2
MAXFILES=10
MAXSIZE=1000
######## End of user settings ############

# How deep in the file system are we now?
TOP=`pwd|tr -cd '/'|wc -c`

populate() {
    cd $1
    curdir=$PWD

    files=$(($RANDOM*$MAXFILES/32767))
    for n in `seq $files`
    do
        f=`mktemp XXXXXX`
        size=$(($RANDOM*$MAXSIZE/32767))
        head -c $size /dev/urandom > $f
    done

    depth=`pwd|tr -cd '/'|wc -c`
    if [ $(($depth-$TOP)) -ge $MAXDEPTH ]
    then
        return
    fi

    unset dirlist
    dirs=$(($RANDOM*$MAXDIRS/32767))
    for n in `seq $dirs`
    do
        d=`mktemp -d XXXXXX`
        dirlist="$dirlist${dirlist:+ }$PWD/$d"
    done

    for dir in $dirlist
    do
        populate "$dir"
    done
}

populate $PWD

在尺寸100个创建随机命名50MB的文件中的每个:

for i in `seq 1 100`; do echo $i; dd if=/dev/urandom bs=1024 count=50000 > `echo $RANDOM`; done

随机变量将每次给你一个不同的号码:

echo $RANDOM

另存为 “script.sh”,运行作为./script.sh SIZE。该printf的代码 http://mywiki.wooledge.org/BashFAQ/071 被取消。当然,你可以初始化mychars阵列蛮力,mychars =( “0” 和 “1” ...... “A” ...... “Z”, “A” ... “Z”),但不会是任何乐趣,将它

#!/bin/bash
declare -a mychars
for (( I=0; I<62; I++ )); do
    if [ $I -lt 10 ]; then
        mychars[I]=$I
    elif [ $I -lt 36 ]; then
        D=$((I+55))
        mychars[I]=$(printf \\$(($D/64*100+$D%64/8*10+$D%8)))
    else
        D=$((I+61))
        mychars[I]=$(printf \\$(($D/64*100+$D%64/8*10+$D%8)))
    fi
done
for (( I=$1; I>0; I-- )); do
     echo -n ${mychars[$((RANDOM%62))]}
done
echo
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top