Не понимаю dd аргументы команды вообще

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

Я хочу создать 100-мегабайтный текстовый файл, каждая строка которого содержит одно слово «тестирование». Это была моя первая попытка:

~$ perl -e 'print "testing\n" while 1' | dd of=X bs=1M count=100
0+100 records in
0+100 records out
561152 bytes (561 kB) copied, 0.00416429 s, 135 MB/s

Хм, это странно. А как насчет других комбинаций?

~$ perl -e 'print "testing\n" while 1' | dd of=X bs=100K count=1K
0+1024 records in
0+1024 records out
4268032 bytes (4.3 MB) copied, 0.0353145 s, 121 MB/s

~$ perl -e 'print "testing\n" while 1' | dd of=X bs=10K count=10K
86+10154 records in
86+10154 records out
42524672 bytes (43 MB) copied, 0.35403 s, 120 MB/s

~$ perl -e 'print "testing\n" while 1' | dd of=X bs=1K count=100K
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0.879549 s, 119 MB/s

Итак, из этих четырех очевидно эквивалентные команды, все производят файлы разного размера, только один из которых - тот, который я ожидал. Почему это?

РЕДАКТИРОВАТЬ: Кстати, я немного смущен, что не подумал о "да т esting "вместо этой более длинной команды Perl.

12
задан Sean 21 July 2011 в 21:40
поделиться