好的,我会将 man curl
帮助文档按段落分割并翻译成中文。由于文档非常长,可能需要几次才能完成。我们从头开始翻译,首先是文档的开头部分:
curl 命令手册(完整翻译)
名称
curl
- 用于数据传输的命令行工具
概要
curl [选项] [URL...]
描述
curl
是一个用于数据传输的命令行工具,支持多种协议,包括 HTTP、HTTPS、FTP、SFTP、SCP、LDAP 等。它能够使用 URL 作为数据源或目标,并支持执行 GET、POST 等多种请求方式。curl
可通过 标准输入/输出、文件系统 或 网络 完成数据的下载和上传。它是一个广泛使用的命令行工具,特别适合于脚本编写和自动化任务。
选项
基本选项
选项 | 说明 |
-X, --request <方法> | 指定 HTTP 请求的方法,默认为 GET 。例如,-X POST 。 |
-d, --data <数据> | 发送 POST 请求的数据。可以是键值对、JSON 数据等。 |
-F, --form <数据> | 发送表单数据,适用于文件上传等操作。 |
-I, --head | 仅获取 HTTP 响应的 头部信息,不下载内容。 |
-G, --get | 以 GET 方式发送请求,并将 -d 选项中的数据附加在 URL 上。 |
-L, --location | 自动跟随 重定向,如果响应返回 3xx 状态码,curl 会自动请求新的 URL。 |
数据处理选项
选项 | 说明 |
-o, --output <文件> | 将下载的数据输出到指定文件。默认为标准输出。 |
-O, --remote-name | 根据 URL 自动使用文件名保存文件。例如,https://example.com/file.zip 会被保存为 file.zip 。 |
-C, --continue-at <偏移量> | 断点续传下载,-C - 表示继续上次中断的下载。 |
-r, --range <范围> | 请求特定的字节范围,格式如 -r 0-99 ,下载文件的前 100 字节。 |
认证与代理选项
选项 | 说明 |
-u, --user <用户名:密码> | 在进行 HTTP/FTP 认证 时提供用户名和密码。格式为 -u username:password 。 |
--proxy-user <用户名:密码> | 提供代理服务器的用户名和密码。 |
--basic | 使用 基本认证(默认)。 |
--digest | 使用 Digest 认证,更安全。 |
-x, --proxy <代理服务器> | 设置代理服务器,例如 -x http://proxy.com:8080 。 |
网络相关选项
选项 | 说明 |
--compressed | 启用 gzip/deflate 压缩,可以加速下载过程。 |
--max-time <秒数> | 设置请求的 最大时间,单位为秒。超时后会自动中止请求。 |
-s, --silent | 安静模式,不输出进度条和错误信息。 |
-w, --write-out <格式> | 自定义输出格式。可以使用占位符,如 %{http_code} 输出 HTTP 状态码。 |
其他选项
选项 | 说明 |
-v, --verbose | 显示详细的 请求和响应信息,便于调试。 |
-i, --include | 在输出中包含 HTTP 头部。 |
-b, --cookie <数据/文件> | 使用指定的 cookie 数据进行请求。可以通过 -b "name=value" 或 -b cookies.txt 来设置。 |
-c, --cookie-jar <文件> | 将 服务器返回的 cookies 保存到文件中。 |
好的,我们继续翻译 man curl
的后续部分:
传输选项
限制选项
选项 | 说明 |
--limit-rate <速率> | 限制数据传输速率。例如,--limit-rate 100k 限制下载速率为 100 KB/s。 |
--max-filesize <大小> | 限制下载文件的最大大小,超过该大小将被中止下载。 |
--max-redirs <次数> | 限制 重定向的最大次数,防止无限循环重定向。 |
-e, --referer <网址> | 设置 Referer 头部。通常用于模拟网页请求来源。 |
--retry <次数> | 请求失败时自动重试的次数。 |
SSL 选项
选项 | 说明 |
-k, --insecure | 允许不验证 SSL 证书(不推荐),可以绕过证书验证,适用于测试环境。 |
--cert <证书文件> | 使用指定的 客户端证书 文件进行认证。 |
--key <密钥文件> | 指定与 客户端证书 配对的密钥文件。 |
--cacert <证书文件> | 指定用于验证对方 SSL 证书的 CA 证书 文件。 |
--capath <目录> | 提供证书所在的 目录,而非单个证书文件。 |
FTP/FTPS 选项
选项 | 说明 |
-T, --upload-file <文件> | 上传文件到指定 FTP 服务器。 |
-u, --user <用户名:密码> | 用于 FTP 认证的用户名和密码。 |
--ftp-create-dirs | 在 FTP 上传时,若目标目录不存在则自动创建。 |
--ftp-pasv | 使用 被动模式 进行 FTP 连接。 |
--ftp-ssl | 启用 FTP over SSL。 |
HTTP 选项
选项 | 说明 |
-A, --user-agent <字符串> | 设置 User-Agent 头部,模拟不同的浏览器或客户端。 |
--http1.0 | 强制使用 HTTP/1.0 协议进行通信。 |
--http2 | 强制使用 HTTP/2 协议进行通信。 |
--http3 | 强制使用 HTTP/3 协议进行通信(如果支持)。 |
-L, --location | 在遇到 重定向 时自动跟随新 URL。 |
-i, --include | 输出 响应头部,通常与 -L 配合使用,查看重定向链。 |
输出选项
选项 | 说明 |
-o, --output <文件> | 将 下载内容 保存到指定的文件中。 |
-O, --remote-name | 直接使用 URL 中的文件名进行保存。 |
-w, --write-out <格式> | 输出结果的自定义格式。可以选择特定的格式(如 HTTP 状态码、传输时间等)。 |
-v, --verbose | 显示更详细的请求和响应信息,适合调试使用。 |
FTP 上传选项
选项 | 说明 |
-T, --upload-file <文件> | 上传文件至指定的 FTP 服务器。 |
--ftp-create-dirs | 上传时,如果目标目录不存在,则自动创建目录。 |
--ftp-pasv | 使用 被动模式 进行 FTP 传输。 |
其他有用选项
选项 | 说明 |
-S, --show-error | 即使在不输出进度条时,也会显示错误信息。 |
-h, --help | 显示帮助信息,列出所有可用的选项和用法。 |
--version | 输出 curl 的版本信息。 |
返回码
curl
命令在执行后会返回相应的退出码,这些返回码可以帮助你理解请求的执行状态。
返回码 | 说明 |
0 | 操作成功完成。 |
6 | 无法解析主机名。 |
7 | 无法连接到主机或服务器。 |
28 | 请求超时。 |
22 | HTTP 错误响应,可能是 4xx 或 5xx 状态码。 |
35 | SSL 连接错误。 |
示例
示例 1: 下载文件
curl -O https://example.com/file.txt
此命令将从 example.com
下载 file.txt
文件,并将其保存为相同的文件名。
示例 2: 上传文件
curl -T myfile.txt ftp://ftp.example.com/
将 myfile.txt
上传到 ftp.example.com
的根目录。
示例 3: 使用 POST 请求发送数据
curl -X POST -d "name=John&age=30" https://example.com/submit
向 https://example.com/submit
发送一个 POST 请求,数据为 name=John&age=30
。
好的,我们继续翻译剩余部分。
URL 格式
curl
支持多种协议和 URL 格式。以下是一些常见的协议和 URL 格式示例:
协议 | 格式示例 | 说明 |
HTTP | http://example.com | 普通 HTTP URL |
HTTPS | https://example.com | 使用 SSL 的 HTTPS URL |
FTP | ftp://ftp.example.com | FTP URL,支持上传和下载 |
FTPS | ftps://ftp.example.com | 加密的 FTP(FTPS) |
SFTP | sftp://sftp.example.com | 安全文件传输协议 SFTP |
LDAP | ldap://ldap.example.com | LDAP 协议 |
FILE | file:///path/to/file | 本地文件路径 |
认证和身份验证
curl
支持多种认证方式,例如 HTTP、FTP、SMTP、IMAP 等。可以使用 -u
或 --user
参数来指定用户名和密码。
HTTP 身份验证
选项 | 说明 |
-u <用户名:密码> | 使用 HTTP 基本认证,指定用户名和密码 |
--proxy-user <用户名:密码> | 为代理服务器指定用户名和密码 |
FTP 身份验证
选项 | 说明 |
-u <用户名:密码> | 用于 FTP 认证的用户名和密码 |
代理认证
选项 | 说明 |
--proxy-user <用户名:密码> | 为 HTTP/FTP/HTTPS 代理指定认证信息 |
支持的协议
curl
支持的协议种类繁多,常见的包括:
- HTTP 和 HTTPS
- FTP 和 FTPS
- SFTP
- SCP(用于安全的文件拷贝)
- LDAP
- SMTP
- IMAP(邮件协议)
- POP3(邮件协议)
常见用途
1. 下载文件
curl -O https://example.com/file.txt
从指定 URL 下载文件并保存为原始文件名。
2. 上传文件
curl -T myfile.txt ftp://ftp.example.com/
将 myfile.txt
上传至指定的 FTP 服务器。
3. 发送 POST 请求
curl -X POST -d "name=John&age=30" https://example.com/submit
向指定 URL 发送 POST 请求,提交表单数据。
4. 获取 HTTP 响应头
curl -I https://example.com
获取指定 URL 的 HTTP 响应头。
5. 设置自定义 User-Agent
curl -A "Mozilla/5.0" https://example.com
模拟使用 Mozilla 浏览器访问指定 URL。
错误代码
curl
命令可能会返回一些错误代码,帮助用户排查问题。以下是常见的错误代码及其说明:
错误代码 | 说明 |
6 | 无法解析主机名 |
7 | 无法连接到主机或服务器 |
22 | HTTP 错误状态码(例如 4xx 或 5xx) |
28 | 请求超时 |
35 | SSL 连接失败 |
51 | 不支持的协议 |
调试选项
如果你希望查看更多调试信息,可以使用以下选项:
选项 | 说明 |
-v, --verbose | 打印详细的请求和响应信息,适合调试 |
-i, --include | 显示响应头部信息 |
-D, --dump-header | 将响应头部信息输出到文件 |
--trace <文件> | 打印更详细的请求和响应的跟踪信息 |
附加信息
- 代理服务器:
curl
可以通过指定代理服务器来进行请求。代理服务器支持的协议包括 HTTP、HTTPS、FTP 和 SOCKS。
- SSL/TLS:
curl
支持 SSL 和 TLS 加密协议,确保数据传输的安全性。
这就是 man curl
文档的完整翻译,如果你有进一步的疑问或者需要更多的帮助,随时告诉我!
更多资源