Linux: копируем красиво (с прогресс баром)

Все, кто хоть раз использовал wget, видели progress bar скачивания файла. Можно ли что-то подобное сделать и с командой cp?

Легко, как два байта переслать:


#!/bin/sh
cp_p()
{
set -e
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

результат работы выглядит так:


cp_p /install/suse-10.3.iso /mnt
75% [===========================================> ]

Бесполезно, но… красиво!

З.Ы. Придумал не я, честно подглядел вот здесь.

Linux: копируем красиво (с прогресс баром): 2 комментария

  1. Привет, я в программировании полный ноль, разве что HTML на среднем уровне и основы PHP. И для сайтов мне частенько приходиться сканировать информацию. Затем отправляю её в болокнот, так как каждый абзац можно вытянуть в одну строку. Естественно в начале строки приходиться добавлять тэг P align… что при большом обьёме текста делать ручками довольно муторно. Скажи, сложно ли сделать программку, которая автоматом будет проставлять открывающий и закрывающий тэги, заданные пользователем в начало и конец строки txt файла. Довольно давно пытался баловаться Visual Basic и основываясь на крохах памяти представляю, что всё не так уж сложно. Поэтому и прошу помощи, или совета… если можно скажи что нить на admin DOG humunfakt ru

  2. НОК, посмотри документацию php по регулярным выражениям (preg_match_all). Разбей текст по абзацам. Как его разбивать, зависит от способа форматирования, например текст между табуляциями (если есть табы), или текст между двумя переводами строки (если абзацы отделены друг от друга пустой строкой). Ну а как научишься разбивать текст по абзацам, добавлять теги в начало и конец текста не составит труда.

Обсуждение закрыто.