kika: (Default)
kika ([personal profile] kika) wrote2009-04-26 11:37 pm
Entry tags:

Загадки для сисадминов

Как в шелле создать файл длиной N (или даже M) байт, состоящий сплошь из символов 'X' (или 'A') ?

Я легко придумал решение, но оно поражает даже меня своим идиотизмом.

[identity profile] dmzlj.livejournal.com 2009-04-26 07:57 pm (UTC)(link)


for a in  $(seq 1 30); do echo -n A; done;



как-то так? я правда не сисадмин, и это скорее баш - ну, честно старался не пользоваться каким-нибудь перлом.

[identity profile] msh.livejournal.com 2009-04-26 09:50 pm (UTC)(link)
э-э-э (не читая комментов) ..

dd if=/dev/zero bs=1 count=$M | tr '\000' 'X'

[identity profile] jsn.livejournal.com 2009-04-26 09:56 pm (UTC)(link)
мне прям интересно, что ты придумал. "echo [ESC]10000a" ? :)

[identity profile] msh.livejournal.com 2009-04-26 09:59 pm (UTC)(link)
не могу не доставить лулзов

$ printmany
Usage: printmany <size> <hexcode>


[identity profile] evolver.livejournal.com 2009-04-27 01:29 am (UTC)(link)
идиотизм в стиле кумар-патела:
outName=myfile; count=1000000; exeName=/tmp/chargen.$$; (echo "#include <stdio.h>^Mint main(int argc, char** argv){for(int i=0;i<$count;++i)printf(\"A\");return 0;}" | gcc -x c++ -lstdc++ -o $exeName -) && $exeName > $outName ; rm -f $exeName

А что такого идиотского-то?

[identity profile] bakabaka.livejournal.com 2009-04-27 03:29 am (UTC)(link)
Проще всего взять N первых байт из бесконечного их потока.
Раз потока произвольных символов нет, используем тот, что есть, и заменяем на то, что нужно.
(Читать из /dev/random было бы извратнее, да.)
(Ну, msh использовал if= вместо cat - по сути почти то же самое)

[identity profile] dottedmag.livejournal.com 2009-04-27 11:03 am (UTC)(link)
Извращения на тему:

yes Z | tr -d '\n' | head -c 1000000 > file


Ну или почти-шеллом :)
awk 'BEGIN { for(i=0; i<1000000; ++i) { printf "Z"; } }' > file

[identity profile] krotoff.livejournal.com 2009-04-27 03:50 pm (UTC)(link)
Чего только люди не выдумаю, лишь бы не работать на Си :D