Ответ 1
Вы можете попробовать выполнить команду head
:
$ head -c 100000 /dev/urandom >dummy
Я хотел бы создать фиктивные файлы в bash. Содержание не имеет значения, если бы оно было случайным, было бы неплохо, но все же байт также приемлем.
Моя первая попытка заключалась в следующей команде:
rm dummy.zip;
touch dummy.zip;
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
x=`expr $x + 1`;
done;
Проблема заключалась в его плохом качестве. Я использую GitBash для Windows, поэтому в Linux это может быть намного быстрее, но script явно не оптимален.
Не могли бы вы предложить мне более быстрый и приятный способ создания фиктивных (двоичных) файлов заданного размера?
Вы можете попробовать выполнить команду head
:
$ head -c 100000 /dev/urandom >dummy
Вы можете использовать dd для этой цели:
dd if=/dev/urandom bs=1024 count=5 of=dummy
Обратите внимание, что
x=`expr $x + 1`;
- не самый эффективный способ вычисления в bash. Выполнение арифметического целочисленного вычисления в двойных круглых скобках:
x=((x+1))
Но для инкрементированного счетчика в цикле был создан метод for-loop:
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
x=`expr $x + 1`;
done;
в отличие от:
for ((x=0; x<100000; ++x))
do
echo a
done >> dummy.zip
Вот 3 примечания:
Но есть еще более простая форма цикла for:
for x in {0..100000}
do
echo a
done >> dummy.zip
Это создаст текстовый файл размером в 100 000 байт:
yes 123456789 | head -10000 > dummy.file
$ openssl rand 1000000 -out random.tmp
Если ваша файловая система - ext4, btrfs, xfs или ocfs2, и если вам не нужен контент, вы можете использовать fallocate
. Это самый быстрый способ, если вам нужны большие файлы.
fallocate -l 100KB dummy_100KB_file
Подробнее см. "Быстрое создание большого файла в системе Linux?".
echo "Чтобы напечатать слово в последовательности из файла"
с = 1
для w в cat file
делать echo "$ c. $w" c = expr $c +1
сделано
Простой способ:
выполните проверку файла и поместите одну строку "test"
Затем выполните:
cat test >> test
ctrl + c через минуту приведет к большому количеству гигабайт:)