Вы не можете получить информацию о прогрессе через grep; это не имеет смысла.
curl
записывает индикатор выполнения в stderr, поэтому вам нужно перенаправить на стандартный вывод прежде, чем вы сможете выполнить grep:
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | grep 1 | less
Результат:
^M 0.0
%^M######################################################################## 100.
0%^M######################################################################## 100
.0%^M######################################################################## 10
0.0%
Ожидаете ли вы непрерывный поток номеров, которые вы перенаправляете куда-то еще? Или вы рассчитываете захватить цифры в одной точке?
Если это первое, то этот тип наполовину работает с небольшим файлом:
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | sed 's/#//g' -
100.0% 0.0%
Но это бесполезно для большого файла. Вывод не распечатывается до тех пор, пока загрузка не будет завершена, возможно, потому что curl, похоже, отправляет ^ H на терминал. Возможно, есть лучший способ sed
, но я не задерживаю дыхание.
$ curl -# -o l.tbz 'ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2009/06/2009-06-02-05-mozilla-1.9.1/firefox-3.5pre.en-US.linux-x86_64.tar.bz2' 2>&1 | sed 's/#//g' -
100.0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%