How can i generate a random file filled with random number or character in shell script? I also want to specify size of the file.
+7
A:
Use dd
command to read data from /dev/random.
dd if=/dev/random of=random.dat bs=1000000 count=5000
That would read 5000 1MB blocks of random data, that is a whole 5 gigabytes of random data!
Experiment with blocksize argument to get the optimal performance.
Tadeusz A. Kadłubowski
2010-04-06 17:55:18
dd -bs=1024 count=1 if/dev/random of=testit doesn generate the right file size i want...
CKeven
2010-04-06 18:04:26
@Tadeusz: One should usually use bs=1M if he wants MiB, not MB.
wRAR
2010-04-06 18:05:42
@CKeven: `bs`, not `-bs`.
wRAR
2010-04-06 18:07:00
After a second read of the question, i think he also wanted to save only characters (guessing alphabetic ones) and numbers to the file.
Amitay Dobo
2010-04-06 18:20:50
That dd command is unlikely to complete as there will not be 5 gigabytes of entropy available. Use /dev/urandom if you need this much "randomness".
camh
2010-04-07 14:58:20
+1
A:
The RANDOM variable will give you a different number each time:
echo $RANDOM
armandino
2010-04-06 17:58:41
+1
A:
head -c 10 /dev/random > rand.txt
change 10 to whatever. Read "man random" for differences between /dev/random and /dev/urandom.
Or, for only base64 characters
head -c 10 /dev/random | base64 | head -c 10 > rand.txt
The base64 might include some characters you're not interested in, but didn't have time to come up with a better single-liner character converter... (also we're taking too many bytes from /dev/random. sorry, entropy pool!)
Amitay Dobo
2010-04-06 17:59:18
oops, missed the characters and numbers part, i'm guessing you mean alphanumeric characters... need to revise.
Amitay Dobo
2010-04-06 18:01:57
Saving entropy: the latest trend in egologists' green living. :)
Tadeusz A. Kadłubowski
2010-04-06 18:20:20
+1
A:
A good start would be:
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
zaf
2010-04-06 18:00:25