首页 > 技术文章 > wget选项

Huang-ze 2020-12-10 22:05 原文

wget调用

wget [option]… [URL]…
wget [选项]…[ URL ]…

Wget只会下载命令行中指定的所有URL。 URL是统一资源定位符,定义如下。

但是,可能希望更改Wget的某些默认参数。可以通过两种方式执行此操作:永久性地将适当的命令添加到.wgetrc,或在命令行上指定它。

URL格式

URL是“统一资源定位器”的缩写。统一资源定位符是可通过Internet获得的资源的紧凑字符串表示形式。Wget根据

RFC1738识别URL语法 。这是使用最广泛的形式(方括号表示可选部分):

http://host[:port]/directory/file
ftp://host[:port]/directory/file

还可以在URL中对用户名和密码进行编码:

ftp://user:password@host/path
http://user:password@host/path

用户或密码,或两者都可以省略。如果忽略了HTTP用户名或密码,则不会发送身份验证。但如果不使用FTP用户名,将使用匿名。如果留下FTP密码,的电子邮件地址将作为默认密码提供。

重要提示:如果在命令行中指定一个包含密码的URL,用户名和密码将通过ps对系统上的所有用户可见。在多用户系统中,这是一个很大的安全风险。要解决这个问题,可以使用wget -i -并将url提供给wget的标准输入,每个url在单独的一行上,以C-d结尾。

可以在URL中将不安全字符编码为%xy, xy是字符的ASCII值的十六进制表示。一些常见的不安全字符包括 %(引用为%25)、:(引用为%3A)和@(引用为%40)。有关不安全字符的完整列表,请参考RFC1738

Wget还支持FTP url的类型特性。默认情况下,FTP文档以二进制模式(类型i)检索,这意味着下载时不加更改。另一种有用的模式是a (ASCII)模式,它在不同的操作系统之间转换行分隔符,因此对文本文件很有用。下面是一个例子:

ftp://host/directory/file;type=a

由于历史原因和广泛使用,两个可供选择的URL规范的变种也被支持。但这两种替代形式已弃用,将来可能会不再受支持。

仅FTP语法(受支持NcFTP):

host:/dir/file

仅HTTP语法(由引入Netscape):

host[:port]/dir/file

选项语法

由于Wget使用GNU getopt处理命令行参数,因此每个选项都有一个长格式和一个短格式。长选项更容易记住,但输入花一些时间。可以自由地混合使用不同的选项样式,或在命令行参数后指定选项。因此,可以这样写:

wget -r --tries=10 http://fly.srk.fer.hr/ -o log

接受参数的选项和参数之间的空格可以省略。代替 '-o log' 你可以写 '-olog'。

您可以将几个不需要参数的选项放在一起,例如:

wget -drc URL
等同于
wget -d -r -c URL

因为选项可以在参数之后指定,所以可以用--结束它们。因此,以下将尝试下载URL -x ,报告失败到log:

wget -o log -- -x

接受用逗号分隔列表的选项都遵守指定空列表将清除其值的约定。这对于清除.wgetrc设置很有用。例如,如果您的.wgetrcexclude_directory设置为/cgi-bin,下面的示例将首先重置它,然后将其设置为排除/~nobody/~somebody。您还可以清除.wgetrc中的列表

wget -X '' -X /~nobody,/~somebody

大多数不接受参数的选项都是布尔选项,之所以这样命名是因为它们的状态可以用一个yes-or-no(“布尔”)变量来捕获。例如,--follow-ftp告诉Wget从HTML文件中跟随FTP链接,另一方面,--no-glob告诉Wget不要在FTP url上执行文件遍历。布尔选项可以是肯定的,也可以是否定的(以--no开头)。所有这些选项共享几个属性。

除非另有说明,否则假定默认行为与该选项完成的行为相反。例如,文档中存在的--follow-ftp假定默认为遵循HTML页面的FTP链接。

肯定选项可以通过在选项名称前加上-no-来否定;否定选项可以通过省略-no-前缀来进行否定。这似乎是多余的——如果肯定选项的默认选项是不做某件事,那么为什么要提供明确地关闭它的方法呢?但是启动文件实际上可能会改变默认值。例如,在.wgetrc中使用follow_ftp = on会使Wget默认遵循FTP链接,而使用--no-follow-ftp是从命令行恢复工厂默认值的唯一方法。

退出状态

如果遇到问题,Wget可能会返回几个错误代码之一。

  • 0

    没有问题发生。

  • 1

    通用错误代码。

  • 2

    解析错误-例如,在解析命令行选项时,“.wgetrc' 要么 '.netrc'...

  • 3

    文件I / O错误。

  • 4

    网络故障。

  • 5

    SSL验证失败。

  • 6

    用户名/密码认证失败。

  • 7

    协议错误。

  • 8

    服务器发出了错误响应。

当遇到多种类型的错误时,除了0和1以外,编号较低的退出代码优先于编号较高的退出代码。

在1.12之前的Wget版本中,Wget的退出状态往往无益且不一致。不管遇到什么问题,递归下载实际上总是返回0(成功),并且非递归获取仅返回与最近尝试过的下载相对应的状态。

推荐阅读