Contents

WGET仅显示进度条

1. 概述

wget 是用于从 Web 下载数据的 Linux 命令。在本教程中,我们将自定义wget输出并仅显示进度条。

2. 使用wget选项

让我们从从网站下载页面开始:

$ wget https://www.blogdemo.com
--2021-10-27 21:23:19--  
Resolving www.blogdemo.com (www.blogdemo.com)... 104.26.12.74, 172.67.72.45, 104.26.13.74, ...
Connecting to www.blogdemo.com (www.blogdemo.com)|104.26.12.74|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length:  102117 (100K) [text/html]
Saving to: ‘index.html’
index.html          100%[===========================================================================>]  99.72K   352KB/s    in 0.3s
2021-10-27 21:23:20 (352 KB/s) - ‘index.html’ saved [102117/102117]

正如我们所看到的,wget命令在终端上打印了很多信息。

2.1. 仅显示进度条

如果我们想要去掉除进度条之外的所有输出行,我们可以结合使用*–show-progress-q*选项:

$ wget https://www.blogdemo.com -q --show-progress
index.html          100%[===========================================================================>] 99.72K 231KB/s in 0.4s

-q选项关闭wget输出,-show-progress选项强制wget以任何详细程度显示进度条**。请注意,–show-progress选项仅在GNU wget 1.16之后可用。

我们可以使用*–version选项在我们的系统中找到安装的wget*的版本:

$ wget --version
GNU Wget 1.20.1 built on linux-gnueabihf

2.2. 更改进度指示器

使用wget,显示下载进度的指标是条和点。默认情况下使用条形指示器。但如果输出不是TTY ,则默认使用点指示符

我们可以通过*–progress*选项设置进度类型:

$ wget https://www.blogdemo.com -q --show-progress --progress=dot 
 0K .......... .......... .......... .......... .......... 50% 363K 0s
50K .......... .......... .......... .......... ......... 100% 751K=0.2s

每个点代表固定数量的下载数据。

3. 使用grep

对于较低的wget版本(< 1.16),其中*–show-progress选项不可用,我们可以过滤我们想要的行以获得更清晰的输出。例如,**在wget*输出中,我们有一行带有“ % ”符号的行,它显示了下载进度**。我们可以用grep 找到这些行:

$ wget https://www.blogdemo.com  2>&1 | grep '%'
 0K .......... .......... .......... .......... .......... 50% 339K 0s
50K .......... .......... .......... .......... ......... 100% 436K=0.3s

请注意,如果我们的 URL 中有一个“ % ”符号,该行也会打印到终端。在这种情况下,我们可以搜索另一个符号,如“ = ”。

在这种情况下,点符号用作默认指示符。因此,如果我们想要使用 bar 参数并在任何情况下覆盖点指示器,我们可以使用force参数:

$ wget https://www.blogdemo.com  2>&1 --progress=bar:force| grep '%' 
index.html    100%[===================>] 99.72K 259KB/s in 0.4s

请注意,force参数仅适用于柱形指示器。