2010-06-04 1 views
1

Я часто создать файл определенного размера с трюком, какКак «нулевой» файл с 1-х

dd if=/dev/zero of=1gb.dd bs=1M count=1024 

или, возможно, даже

dd if=/dev/urandom of=1gb.dd bs=1M count=1024 
dd if=/dev/random of=1gb.dd bs=1M count=1024 

Но что, если я хочу получить все 1 вместо 0 или случайных?

ответ

2

Для случайных данных практически во всех случаях используется /dev/urandom. (Вы также можете использовать /dev/random, но гораздо медленнее, потому что это энтропия переплете urandom является ГСЧ, который самостоятельно семена из random.).

Для ненулевого файла, я хотел бы предложить что-то вроде этого:

perl -e 'print chr(0xff) x 1000' > t 

Очевидно, что настройте 0xff и 1000 по вкусу.

+1

'python -c" print chr (0x31) * 1000 "> t' Только что приправленный питон. – zdav

-2

Добавьте еще одну команду после вашего dd.

sed 's/0/1/g' file.txt 

Оно будет заменять все 0 на 1.

Вероятно, лучшее решение там, но это должно работать :-)

Edit: На самом деле вы будете трубы результат от этого в любой новый файл или заменить один и тот же файл. sed по умолчанию на экране (IIRC)

+0

Интересно, как долго sed возьмет файл 1Gb. – DVK

+11

Это неправильно./dev/zero имеет все биты нуль (0x00). Ваша команда sed ищет цифру ASCII 0 (0x30). –

1

Это занимает примерно четыре раза, пока dd if=/dev/zero, но лишь немного больше, чем команда Perl в ответ crazyscot в:

touch shred.out; yes $'\xff' | tr -d $'\n' | shred --random-source=/dev/stdin --size=1G --iterations=1 shred.out 

Интересно, что подобная команда остановлена, прежде чем он получил 1 Гб:

yes $'\xff' | tr -d $'\n' | dd if=/dev/stdin of=1gb.dd bs=1M count=1024 
+1

+1 для изобретательности:] – DRL

Смежные вопросы