генерируйте случайный файл с помощью сценария оболочки

Как я могу генерировать случайный файл, заполненный случайным числом или символом в сценарии оболочки? Я также хочу указать размер файла.

8
задан Tadeusz A. Kadłubowski 6 April 2010 в 18:13
поделиться

4 ответа

Используйте команду dd для чтения данных из / dev / random.

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

Это позволит прочитать 5000 блоков случайных данных по 1 Мбайт, то есть целых 5 гигабайт случайных данных!

Поэкспериментируйте с аргументом размера блока, чтобы получить оптимальную производительность.

18
ответ дан 5 December 2019 в 05:44
поделиться
head -c 10 /dev/random > rand.txt

измените 10 на любое значение. Прочитайте "man random" о различиях между /dev/random и /dev/urandom.

Или, для символов только base64

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

Base64 может включать некоторые символы, которые вас не интересуют, но у нас не было времени придумать лучший конвертер однострочных символов... (также мы забираем слишком много байт с /dev/random. прости, энтропийный пул!)

7
ответ дан 5 December 2019 в 05:44
поделиться

Хорошим началом было бы:

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
3
ответ дан 5 December 2019 в 05:44
поделиться

Переменная RANDOM каждый раз будет давать вам другое число:

echo $RANDOM
0
ответ дан 5 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: