В соседнем треде идёт речь о написании генератора торрент-файлов и в связи с этим мне стало любопытно насколько просто будет написать его на шелле. У меня уже есть реализация Bencode на awk, поэтому вопрос только за подсчётом контрольных сумм блоков.
Крупными мазками вырисовывается что-то такое.
cat file1 file2 file3 | ( PIECELENGTH=262144; sz=$PIECELENGTH; while [ $sz = $PIECELENGTH ]; do head -c $PIECELENGTH | tee /tmp/piece.$$ | sha1sum; sz=$(stat -c%s /tmp/piece.$$); done )
Здесь раздражает временный файл и вызов stat. Приглашаю подумать, как обойтись без них. Python/Perl запрещены условием (иначе не интересно).