- -a/--append 上传文件时,附加到目标文件
- -A/--user-agent
设置用户代理发送给服务器 - - anyauth 可以使用“任何”身份验证方法
- -b/--cookie
cookie字符串或文件读取位置 - - basic 使用HTTP基本验证
- -B/--use-ascii 使用ASCII /文本传输
- -c/--cookie-jar
操作结束后把cookie写入到这个文件中 - -C/--continue-at
断点续转 - -d/--data HTTP POST方式传送数据
- --data-ascii 以ascii的方式post数据
- --data-binary 以二进制的方式post数据
- --negotiate 使用HTTP身份验证
- --digest 使用数字身份验证
- --disable-eprt 禁止使用EPRT或LPRT
- --disable-epsv 禁止使用EPSV
- -D/--dump-header
把header信息写入到该文件中 - --egd-file
为随机数据(SSL)设置EGD socket路径 - --tcp-nodelay 使用TCP_NODELAY选项
- -e/--referer 来源网址
- -E/--cert
客户端证书文件和密码 (SSL) - --cert-type
证书文件类型 (DER/PEM/ENG) (SSL) - --key
私钥文件名 (SSL) - --key-type
私钥文件类型 (DER/PEM/ENG) (SSL) - --pass
私钥密码 (SSL) - --engine
加密引擎使用 (SSL). "--engine list" for list - --cacert
CA证书 (SSL) - --capath
CA目录 (made using c_rehash) to verify peer against (SSL) - --ciphers
- SSL密码
- --compressed 要求返回是压缩的形势 (using deflate or gzip)
- --connect-timeout
设置最大请求时间 - --create-dirs 建立本地目录的目录层次结构
- --crlf 上传是把LF转变成CRLF
- -f/--fail 连接失败时不显示http错误
- --ftp-create-dirs 如果远程目录不存在,创建远程目录
- --ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用
- --ftp-pasv 使用 PASV/EPSV 代替端口
- --ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址
- --ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输
- --ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输
- -F/--form
模拟http表单提交数据 - -form-string
模拟http表单提交数据 - -g/--globoff 禁用网址序列和范围使用{}和[]
- -G/--get 以get的方式来发送数据
- -h/--help 帮助
- -H/--header
自定义头信息传递给服务器 - --ignore-content-length 忽略的HTTP头信息的长度
- -i/--include 输出时包括protocol头信息
- -I/--head 只显示文档信息
- 从文件中读取-j/--junk-session-cookies忽略会话Cookie
- - 界面<interface>指定网络接口/地址使用
- - krb4 <级别>启用与指定的安全级别krb4
- -j/--junk-session-cookies 读取文件进忽略session cookie
- --interface <interface> 使用指定网络接口/地址
- --krb4
使用指定安全级别的krb4 - -k/--insecure 允许不使用证书到SSL站点
- -K/--config 指定的配置文件读取
- -l/--list-only 列出ftp目录下的文件名称
- --limit-rate
设置传输速度 - --local-port
强制使用本地端口号 - -m/--max-time
设置最大传输时间 - --max-redirs
设置最大读取的目录数 - --max-filesize
设置最大下载的文件总量 - -M/--manual 显示全手动
- -n/--netrc 从netrc文件中读取用户名和密码
- --netrc-optional 使用 .netrc 或者 URL来覆盖-n
- --ntlm 使用 HTTP NTLM 身份验证
- -N/--no-buffer 禁用缓冲输出
- -o/--output 把输出写到该文件中
- -O/--remote-name 把输出写到该文件中,保留远程文件的文件名
- -p/--proxytunnel 使用HTTP代理
- --proxy-anyauth 选择任一代理身份验证方法
- --proxy-basic 在代理上使用基本身份验证
- --proxy-digest 在代理上使用数字身份验证
- --proxy-ntlm 在代理上使用ntlm身份验证
- -P/--ftp-port 使用端口地址,而不是使用PASV
- -Q/--quote
文件传输前,发送命令到服务器 - -r/--range
检索来自HTTP/1.1或FTP服务器字节范围 - --range-file 读取(SSL)的随机文件
- -R/--remote-time 在本地生成文件时,保留远程文件时间
- --retry
传输出现问题时,重试的次数 - --retry-delay
传输出现问题时,设置重试间隔时间 - --retry-max-time
传输出现问题时,设置最大重试时间 - -s/--silent静音模式。不输出任何东西
- -S/--show-error 显示错误
- --socks4
用socks4代理给定主机和端口 - --socks5
用socks5代理给定主机和端口 - --stderr
- -t/--telnet-option
Telnet选项设置 - --trace
对指定文件进行debug - --trace-ascii
Like --跟踪但没有hex输出 - --trace-time 跟踪/详细输出时,添加时间戳
- -T/--upload-file
上传文件 - --url
Spet URL to work with - -u/--user
设置服务器的用户和密码 - -U/--proxy-user
设置代理用户名和密码 - -v/--verbose
- -V/--version 显示版本信息
- -w/--write-out [format]什么输出完成后
- -x/--proxy
在给定的端口上使用HTTP代理 - -X/--request
指定什么命令 - -y/--speed-time 放弃限速所要的时间。默认为30
- -Y/--speed-limit 停止传输速度的限制,速度时间'秒
- -z/--time-cond 传送时间设置
- -0/--http1.0 使用HTTP 1.0
- -1/--tlsv1 使用TLSv1(SSL)
- -2/--sslv2 使用SSLv2的(SSL)
- -3/--sslv3 使用的SSLv3(SSL)
- --3p-quote like -Q for the source URL for 3rd party transfer
- --3p-url 使用url,进行第三方传送
- --3p-user 使用用户名和密码,进行第三方传送
- -4/--ipv4 使用IP4
- -6/--ipv6 使用IP6
- -#/--progress-bar 用进度条显示当前的传送状态
参考资 料:http://daniel.haxx.se/docs/curl-vs-wget.html
晚上看了Linux下的curl和wget这两个工具,进行了比较和 学习。
它们的区别,我看到的有如下几点:
1.curl是libcurl这个库支持的,wget是一个纯粹的命令行命令。
2.curl 支持更多的协议。curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP and RTSP at the time of this writing. Wget supports HTTP, HTTPS and FTP.
3.curl默认支持 HTTP1.1(也支持1.0),而wget仅仅支持HTTP1.0规范。引用wget的man page中的一段话吧,Please be aware that Wget needs to know the size of the POST data in advance. It's not quite clear how to work around this limitation inherent in HTTP/1.0. Although HTTP/1.1 introduces chunked transfer that doesn't require knowing the request length in advance, a client can't use chunked unless it knows it's talking to an HTTP/1.1 server. And it can't know that until it receives a response, which in turn requires the request to have been completed -- a chicken-and-egg problem.
4.curl在指定要下载的链接时能够 支持URL的序列或集合,而wget则不能这样;
5.wget支持递归下载,而curl则没有这个功能。(这是wget的一个主要好 处,wget也是有优势的,呵呵)
附:HTTP1.0和HTTP1.1的区别
看着它们的man page里面对HTTP支持的描述,我又了解到了一点HTTP1.0和HTTP1.1的区别,HTTP1.1中增加的持续性连接(Persist Connection)与块编码(Chunked Encoding)技术。
块传输编码(Chunked Transfer Coding)
块编码(chunked encoding)改变消息主体使消息主体(message body,译注:消息主体与实体主体是有区别的,后面章节将会介绍)成块发送。每一个块有它自己的大小(size)指示器,在所有的块之后会紧接着一个可 选的包含实体头域的尾部(trailer)。这允许发送端能动态生成内容,并能携带有用的信息,这些信息能让接收者判断消息是否接收完整。
为啥突然想到看这个呢,其实起因是下面所说的。
今天,看 到环境更新脚本中,添加了一段脚本,里面用到了curl这个工具。
这段shell程序如下:
curl http://svn.abcde.com/repos/abc/apps/smile/ -u abc:123456 -o dirname
base_url="http://svn.abcde.com/repos/abc/apps/smile"
while read LINE
do
if [ -z "$LINE" ]; then
continue
fi
echo $LINE |grep "dir name"
if [ $? -eq 1 ]; then
continue
fi
dir=`echo $LINE |sed -e 's/
svn co $svn_url $dir
done < dirname
这段代码是为了得到svn上的 smile目录上的所有目录名称,并将其拼装成svn_url,然后checkout这些url。
svn_url如下所 示:http://svn.abcde.com/repos/abc/apps/smile/aiscclient/
下载得到 的dirname这个文件内容如下:
href CDATA #REQUIRED>
href CDATA #REQUIRED>
]>