2012-06-05 1 views
13

Вы можете использоватьКак получить эквивалент/разработчика/один в Linux

dd if=/dev/zero of=file count=1024 bs=1024 

нулю заполнения файла.

Вместо этого я хочу, чтобы один заполнил файл. Как мне это сделать?

Нет/dev/one file, так как я могу имитировать этот эффект через оболочку bash?

+0

Напишите программу C, чтобы сделать это, должно быть тривиально. –

ответ

10

Попробуйте это:

dd if=<(yes $'\01' | tr -d "\n") of=file count=1024 bs=1024 

Заменитель $'\377' или $'\xFF', если вы хотите, чтобы все биты быть те.

4

Ну, вы могли бы сделать это:

dd if=/dev/zero count=1024 bs=1024 | 
    tr '\000' '\001' > file 
+0

Одно заполнение будет «\ 377», нет? – Neil

+0

Хм, я думаю, это зависит от того, что вы хотите. Это заполнит файл байтами значения '1' (' 01 01 01 01 ... '). Используя '\ 377', вы получите все * bits *, установленные на 1 (так что' FF FF FF FF ... '). Зависит от требований OP. – larsks

23
tr '\0' '\377' < /dev/zero | dd bs=64K of=/dev/sdx 

Это должно быть намного быстрее. Выберите свои блокировки (или добавьте количество), как вам нужно. Запись на SSD-диск до полного с блочным размером 99M дала мне производительность записи 350 М/с.

+0

Я подтверждаю, что это по крайней мере в два раза быстрее, чем принятое решение. Однако я не заметил заметного улучшения производительности от изменения размера блока (хотя есть огромное снижение производительности без аргумента bs). –

0
pv /dev/zero |tr \\000 \\377 >targetfile 

... где \377 это восьмеричное представление 255 (байт со всеми битами, установленными в один). Почему tr работает только с восьмеричными номерами, я не знаю, но будьте осторожны, чтобы не подсознательно перевести это на 3FF.


Синтаксис использования tr является склонным к ошибкам. Я рекомендую проверить, что это делает желаемый перевод ...

cat /dev/zero |tr \\000 \\377 |hexdump -C 

Примечание: pv хорошая утилита, которая заменяет cat и добавляет дисплей прогресса/скорости.

+1

Примечание. Если вы пытаетесь заполнить все устройство, вероятно, лучше избегать 'dd', так как это замедлит работу (по большому счету), если вы не вручную выберите оптимальное значение' bs'. – nobar

+0

'pv' также даст оценку оставшегося времени, если у него будет достаточно информации для этого. – nobar

+0

Пока вы на нем, может быть, префикс с 'time' и' nice'. – nobar

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