Quando você der um pv
um arquivo como argumento de linha de comando, age como cat
e exibe o arquivo e rastreia o progresso dessa saída, que é o que você está vendo. Esse formulário é útil se você estiver usando pv
para alimentar um arquivo para um processo lento (usando um pipe); a manpage tem exemplos.
Você pode pensar em salvar a saída de
dpkg-query --show -f '${source:Package}\n' | sort -u
para um arquivo e usando pv
para alimentar isso para um loop chamando bts select
, mas o arquivo resultante é tão curto que fica armazenado em buffer e pv
considera que foi processado antes do processamento começar.
Você precisa acompanhar o progresso manualmente:
#!/bin/sh
file=$(mktemp)
dpkg-query --show -f '${source:Package}\n' | sort -u > ${file}
lines=$(wc -l ${file} | cut -f1 -d\ )
line=0
while read source; do
line=$((line + 1))
printf "Processing line %d / %d\r" ${line} ${lines} >&2
bts select source:${source} tag:patch | sed "s/^/${source} /g"
done < ${file} | sort -k2,2n -r
rm ${file}
echo "Done " >&2
Vou deixar você adaptar isso para usar uma boa barra de progresso, usando os exemplos em Como adicionar uma barra de progresso a um shell roteiro? .