例如:
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
我怎样才能让它看起来像这样
downloading: TheFile.jpeg ...
25% [======> ] 614,424 173.62K/s ETA 00:14
我知道curl可以做到这一点,但是我需要得到wget才能完成这项工作。
答案 0 :(得分:114)
使用:
wget http://somesite.com/TheFile.jpeg -q --show-progress
-q
- 关闭Wget的输出
--show-progress
- 强制wget以任何详细程度显示进度条
答案 1 :(得分:23)
您可以使用以下过滤器:
progressfilt ()
{
local flag=false c count cr=$'\r' nl=$'\n'
while IFS='' read -d '' -rn 1 c
do
if $flag
then
printf '%s' "$c"
else
if [[ $c != $cr && $c != $nl ]]
then
count=0
else
((count++))
if ((count > 1))
then
flag=true
fi
fi
fi
done
}
$ 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]
此功能取决于在进度条启动之前发送的0x0d0x0a0x0d0x0a0x0d
序列。此行为可能取决于实现。
答案 2 :(得分:10)
正如其他人所指出的,选项--show-progress
是最佳选择,但只有GNU wget 1.16 后才可用,见Noteworthy changes in wget 1.16。
为安全起见,我们可以先检查是否支持--show-progress
:
# set progress option accordingly
wget --help | grep -q '\--show-progress' && \
_PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""
wget $_PROGRESS_OPT ...
也许是时候考虑使用curl
。
答案 3 :(得分:9)
您可以使用follow
的{{1}}选项:
tail
wget somesite.com/TheFile.jpeg --progress=bar:force 2>&1 | tail -f -n +6
将删除前6行。您的+6
版本或您的语言可能会有所不同。
您需要使用wget
,否则请切换到--progress=bar:force
类型。
缺点是刷新的频率低于wget(看起来每2秒)。 dot
的{{1}}选项似乎只是为了这个,但它并没有改变我的任何内容。
答案 4 :(得分:4)
您可以使用标准选项:
wget --progress=bar http://somesite.com/TheFile.jpeg
答案 5 :(得分:2)
这是另一个例子,也许会帮助你
download() {
local url=$1
echo -n " "
wget --progress=dot $url 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
echo -ne "\b\b\b\b"
echo " DONE"
}
答案 6 :(得分:2)
通过以下标志使用:
wget -q --show-progress --progress=bar:force 2>&1
答案 7 :(得分:0)
这不是答案,但这段代码也可能对某些人来说有帮助,例如“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
对我来说至关重要的是stdbuf(1)
。
答案 8 :(得分:0)
这是一个解决方案,它会显示每个文件(或行)的点。如果您使用--recursive
下载,它会特别有用。如果有额外的行,这不会捕获错误并且可能稍微关闭,但是对于许多文件的一般进展它是有帮助的:
wget -r -nv https://example.com/files/ | \
awk -v "ORS=" '{ print "."; fflush(); } END { print "\n" }'
答案 9 :(得分:-5)
curl -o pic.png http://somesite.com/pic.png
只显示没有网址/地址聊天功能的进度信息。