Comment afficher la barre de progression wget uniquement?
Par exemple:
wget http://somesite.com/TheFile.jpeg
downloading: TheFile.tar.gz ...
--09:30:42-- http://somesite.com/TheFile.jpeg
=> `/home/me/Downloads/TheFile.jpeg'
Resolving somesite.co... xxx.xxx.xxx.xxx.
Connecting to somesite.co|xxx.xxx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,614,820 (1.5M) [image/jpeg]
25% [======> ] 614,424 173.62K/s ETA 00:14
Comment puis-je le faire ressembler à ceci
downloading: TheFile.jpeg ...
25% [======> ] 614,424 173.62K/s ETA 00:14
Je sais que curl peut le faire, mais je dois obtenir wget pour faire ce travail.
9 réponses
Vous pouvez utiliser le filtre suivant:
progressfilt ()
{
local flag=false c count cr=$'\r' nl=$'\n'
while IFS='' read -d '' -rn 1 c
do
if $flag
then
printf '%c' "$c"
else
if [[ $c != $cr && $c != $nl ]]
then
count=0
else
((count++))
if ((count > 1))
then
flag=true
fi
fi
fi
done
}
Utilisation:
$ wget --progress=bar:force http://somesite.com/TheFile.jpeg 2>&1 | progressfilt
100%[======================================>] 15,790 48.8K/s in 0.3s
2011-01-13 22:09:59 (48.8 KB/s) - 'TheFile.jpeg' saved [15790/15790]
Cette fonction dépend d'une séquence de 0x0d0x0a0x0d0x0a0x0d
envoyée juste avant le démarrage de la barre de progression. Ce comportement peut dépendre de l'implémentation.
Utilisation:
wget http://somesite.com/TheFile.jpeg -q --show-progress
-q
- Désactiver la sortie de Wget
--show-progress
- Forcer wget à afficher la barre de progression dans n'importe quelle verbosité
L'option --show-progress
, comme souligné par d'autres, est la meilleure option, mais il n'est disponible que depuis GNU wget 1.16, voir les changements Remarquables dans wget 1.16.
Pour être sûr, nous pouvons d'abord vérifier si --show-progress
est pris en charge:
# set progress option accordingly
wget --help | grep -q '\--show-progress' && \
_PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""
wget $_PROGRESS_OPT ...
Peut-être qu'il est temps d'envisager d'utiliser simplement curl
.
Vous pouvez utiliser le follow
option de tail
:
wget somesite.com/TheFile.jpeg --progress=bar:force 2>&1 | tail -f -n +6
Le +6
est de supprimer les 6 premières lignes. Il peut être différent sur votre version de wget
ou votre langue.
Vous devez utiliser --progress=bar:force
sinon wget passe au type dot
.
L'inconvénient est que le rafraîchissement est moins fréquent qu'avec wget (ressemble à toutes les 2 secondes). L'option --sleep-interval
de tail
semble être destinée juste pour cela, mais elle n'a rien changé pour moi.
Vous pouvez utiliser les options standard:
wget --progress=bar http://somesite.com/TheFile.jpeg
Ce n'est pas littéralement une réponse mais cet extrait pourrait également être utile à certains venant ici pour par exemple "zenity wget GUI":
LANG=C wget -O /dev/null --progress=bar:force:noscroll --limit-rate 5k http://nightly.altlinux.org/sisyphus/ChangeLog 2>&1 | stdbuf -i0 -o0 -e0 tr '>' '\n' | stdbuf -i0 -o0 -e0 sed -rn 's/^.*\<([0-9]+)%\[.*$/\1/p' | zenity --progress --auto-close
Ce qui était crucial pour moi est stdbuf(1)
.
Voici une solution qui vous montrera un point pour chaque fichier (ou ligne, d'ailleurs). Il est particulièrement utile si vous téléchargez avec --recursive
. Cela ne détectera pas les erreurs et peut être légèrement désactivé s'il y a des lignes supplémentaires, mais pour des progrès généraux sur beaucoup de fichiers, il est utile:
wget -r -nv https://example.com/files/ | \
awk -v "ORS=" '{ print "."; fflush(); } END { print "\n" }'
curl -o pic.png http://somesite.com/pic.png
Montrez-moi seulement les informations de progression sans le bavardage D'URL/adresse.