cURL

来自 Arch Linux 中文维基

cURL 是一个命令行工具和库,用于使用 URL 传输数据。该命令支持多种不同的协议,包括 HTTP、HTTPS、FTPSCP 和 SFTP。它还可以在没有用户交互的情况下工作,比如在脚本中。

注意: 尽管表面上等同于 wget,但事实并非如此。请参阅 Can_I_do_recursive_fetches_with运行与给定 wget 命令对应的 curl 命令What_is_curl_not

安装[编辑 | 编辑源代码]

安装 curl 软件包。

用法[编辑 | 编辑源代码]

下载[编辑 | 编辑源代码]

cURL 的常见用例是将资源下载到指定文件:

$ curl --output 文件名 URL

如果 URL 包含文件名,则可以直接将资源保存为该文件名:

$ curl --remote-name URL

同样,你也可以使用 -J/--remote-header-name 来接受来自 HTTP 服务器(来自 Content-Disposition 头信息)的文件名提示。当与 -O/--remote-name 结合使用时,如果 HTTP 服务器没有返回文件名提示,curl 将使用 URL 指定的文件名。

您也可以省略输出选项,将资源打印到 stdout:

$ curl URL

HTTP POST[编辑 | 编辑源代码]

您可以使用 cURL 发送 HTTP POST 请求:

$ curl --data 'request body' URL

如果命令行无法容纳 request body,cURL 可以从文件中读取 request body:

$ curl --data @文件名 URL

有时,您可能需要为 Content-Type 头指定一个自定义值(cURL 的默认值为 application/x-www-form-urlencoded)。您可以使用 -H 来实现这一功能。例如,如果您想发送一个带有 JSON body 的 POST request,可以使用:

$ curl --data 'json body' -H 'Content-Type: application/json' URL

请注意,curl 也有一个选项,可以以 json 格式写入 post 数据,并自动更改 header: --json:

$ curl --json '{"key":"value"}' URL

提示与技巧[编辑 | 编辑源代码]

跟踪重定向[编辑 | 编辑源代码]

跟踪重定向(如 HTTP 到 HTTPS 重定向):

$ curl --location URL

显示下载错误[编辑 | 编辑源代码]

默认情况下,curl 会忽略错误(例如,在下载文件时,如果出现错误,curl 不会通知你,创建的文件将是空的),因此使用 --fail 可以让它显示错误信息:

$ curl --fail URL

压缩[编辑 | 编辑源代码]

如果你想压缩传输数据,(例如,在带宽比CPU更有限的情况下,curl 会下载压缩数据,然后在下载后解压缩):

$ curl --compressed URL

进度条[编辑 | 编辑源代码]

当下载文件时,curl 可以选择普通的进度条(例如 [##### ] 80% )。

$ curl --progress-bar URL

通配[编辑 | 编辑源代码]

也可以在 curl 中使用通配

$ curl "example.com/images/[1-9].png"
$ curl "example.com/{first_page,second_page,third_page}"

配置文件[编辑 | 编辑源代码]

curl 也会在主目录和 $XDG_CONFIG_HOME 中搜索名为 .curlrc配置文件。默认情况下,你只需将想要使用的命令行参数放在 curl 中,例如 :

$HOME/.curlrc
# this is a comment, the next line would be the option for progressbar:
-#
# to make curl always compress:
--compressed
# or just
compressed

参见[编辑 | 编辑源代码]