跳至主要内容

【转】cURL 中文用户手册

Joomla! 开源天空  作者:web20  2008-09-02 23:52
  • 摘要:本文翻译了部分curl的用户手册

NAME

curl - transfer a URL

 语法

   curl [options] [URL...]

描述

      curl是一个向服务器或者从服务器下载数据的传输工具,它支持HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE等协议,这个命令设计为不需要用户的干预来执行。

     curl提供了非常多有用的功能,比如代理支持,用户认证,HTTP POST ,FTP Upload,断点续传等等,接下来你会看到,多的会是你头晕目眩。

     curl所有传输相关功能都基于libcurl ,详细信息请看 libcurl 3

URL

     url 语法遵循协议,RFC 3986中你可以看到详细的内容。

     http://site.{one,two,three}.com  你可以指定多个url,或者通过用大括号设置url中的一部分而设定url集合

     ftp://ftp.numericals.com/file[1-100].txt  ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)  ftp://ftp.letters.com/file[a-z].txt

     同样你可以采用数字字母的序列来指定一系列url,你可以混合使用这两种方式,比如 http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html

    在命令行中可以指定任意数量的url,这些url可以按指定顺序逐一获得。

     curl 7.15.1版本以后,你可以指定步长,

 http://www.numericals.com/file[1-100:10].txt  http://www.letters.com/file[a-z:2].txt

     如果未指定协议前缀,curl将猜测协议,默认是http,但是将根据host名称猜测协议。如果host以ftp开头,那么curl将采用ftp协议。

     curl在多文件下载是将重用链接,这将提高速度,当然前提是这些文件是在一个命令行中。

进度提示

curl通常在执行过程中显示一个进度条,显示传输的数据量,传输速度,和剩余估计时间等。

可以,由于curl默认在终端显示传输回来的数据,如果你用curl做一个在终端返回数据的操作,那么curl将禁止在终端显示进度,否则的话,进度条就会与返回数据混淆在一起。

如果你想看到http post,put 这样操作的进度条,那么你就需要将返回的数据输出在文件中,输出可以通过redirect 操作 > 或者 -o 参数来进行。

如果你不想使用默认的进度条,那么可以使用 -#参数设置。

-a/--append

(FTP) When used in an FTP upload, this will tell curl to append to the target file instead of overwriting it. If the file doesn't exist, it will be created.

当使用ftp协议上传的时候,这个参数将使curl追加在目标文件,而不是覆盖它,如果目标文件不存在,将创建它。

If this option is used twice, the second one will disable append mode again.

如果在一个命令行重复使用了这个参数,第二个将不会是追加模式。

-A/--user-agent <agent string>

(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in the string, surround the string with single quote marks. This can also be set with the -H/--header option of course.

HTTP协议指定User-Agent并发送到http服务器,也可以通过-H参数进行设置。一些CGI如果这个域不填入 "Mozilla/4.0"就不能正确返回。如果字符串中有空格,请用单引号包含字串。

If this option is set more than once, the last one will be the one that's used.

如果多次指定这个参数,将使用最后一次的设定。

--anyauth

(HTTP) Tells curl to figure out authentication method by itself, and use the most secure one the remote site claims it supports. This is done by first doing a request and checking the response-headers, thus inducing an extra network round-trip. This is used instead of setting a specific authentication method, which you can do with --basic, --digest, --ntlm, and --negotiate.

Note that using --anyauth is not recommended if you do uploads from stdin, since it may require data to be sent twice and then the client must be able to rewind. If the need should arise when uploading from stdin, the upload operation will fail.

If this option is used several times, the following occurrences make no difference.

-b/--cookie <name=data>

(HTTP) Pass the data to the HTTP server as a cookie. It is supposedly the data previously received from the server in a "Set-Cookie:" line. The data should be in the format "NAME1=VALUE1; NAME2=VALUE2".

http传输cookie给服务器,这些数据可能是前次从服务器Set-Cookie行返回的,数据的格式应该是 NAME1=VALUE1;NAME2=VALUES2

If no '=' letter is used in the line, it is treated as a filename to use to read previously stored cookie lines from, which should be used in this session if they match. Using this method also activates the "cookie parser" which will make curl record incoming cookies too, which may be handy if you're using this in combination with the -L/--location option. The file format of the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format.

如果没有等号,curl就会把NAme作为前次存贮cookie的文件名。 

NOTE that the file specified with -b/--cookie is only used as input. No cookies will be stored in the file. To store cookies, use the -c/--cookie-jar option or you could even save the HTTP headers to a file using -D/--dump-header!

注意,这个参数仅仅作为输入,没有cookie会存贮到文件中,为了保存cookie,请使用 -c/--cookie-jar参数,或者你可以使用 -D/--dump-header参数将整个头保存到文件中

If this option is set more than once, the last one will be the one that's used.

如果重复使用这个参数,将使用最后一次设置

-B/--use-ascii

Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be enforced by using an URL that ends with ";type=A". This option causes data sent to stdout to be in text mode for win32 systems.

在FTP和LDAP协议时候,传输采用ASCII传输方式。

If this option is used twice, the second one will disable ASCII usage.

如果重复使用这个参数,第二个将不能使用ascii方式。

--basic

(HTTP) Tells curl to use HTTP Basic authentication. This is the default and this option is usually pointless, unless you use it to override a previously set option that sets a different authentication method (such as --ntlm, --digest and --negotiate).

If this option is used several times, the following occurrences make no difference.

--ciphers <list of ciphers>

(SSL) 指定链接使用的密码. 必须使用合法的加密方式, 要了解密码的详细内容,请看这个地址: http://www.openssl.org/docs/apps/ciphers.html

多次使用这个参数,最后一个参数有效

--compressed

(HTTP) 请求一个压缩方式的相应,返回非压缩的文档. 如果服务器返回一个不支持的压缩方式,curl将报错。

如果这个参数使用多次,那么每次出现将反转这个参数状态。

--connect-timeout <seconds>

与服务器建立链接的最长时间限制,只限制链接阶段,一但建立了链接,这个参数就不起作用了。See also the -m/--max-time option.

多次使用这个参数,最后一个参数有效

-c/--cookie-jar <file name>

指定curl将cookie写入的文件,curl将从远程服务器得到的所有cookie写入。如果没有cookie,文件不会生成,cookie的写入格式是Netscape格式。如果设定文件名 "-",cookie写入到标准输出。 

注意如果cookie包不能建立或者写入,curl将不会报错或者失败,用 -v选项,会有一个警告显示,但这是唯一的可见反馈。

多次使用这个参数,最后一个参数有效

-C/--continue-at <offset>

指定在指定偏移地址恢复或继续文件传输。 

多次使用这个参数,最后一个参数有效

--create-dirs

与-o参数一起使用的时候,curl将创建必要的本地目录结构。 

FTP or SFTP 要创建远程目录, 请用 --ftp-create-dirs.

--crlf

(FTP) 上床过程中,将cr转换为crlf。

多次使用这个参数,近第一个起作用

-d/--data <data>

(HTTP) POST数据到服务器,与用户填写form并按按钮提交的效果一样。传输的mime type content-type application/x-www-form-urlencoded

-d/--data 与 --data-ascii 相同. 如果要post 二进制数据,应该用--data-binary option. 如果要post URL encode 的一个表单项,应该采用 --data-urlencode.

多次使用这个参数,将合并一起提交,比如 using '-d name=daniel -d skill=lousy' ,那么将post数据是'name=daniel&skill=lousy'

如果要post一个文件,以字符@开头,文件的内容必须是已经 urlencode编码的。比如要post文件 foobar,那么格式是 --data @foobar 

--data-binary <data>

(HTTP) post二进制数据

如果要post一个文件,以字符@开头

--data-urlencode <data>

(HTTP) 与 --data 参数相同,唯一的差别是要采用urlencode编码

--digest

(HTTP) 允许HTTP Digest 认证

--disable-eprt

(FTP) 禁用 EPRT and LPRT 命令 。

--disable-epsv

(FTP) 禁用 EPSV 命令

-D/--dump-header <file>

把完整的响应的头部写入文件.

 

评论

此博客中的热门博文

【转】AMBA、AHB、APB总线简介

AMBA 简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。   AMBA 片上总线        AMBA 2.0 规范包括四个部分:AHB、ASB、APB和Test Methodology。AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。下面将简要介绍比较重要的AHB和APB总线。 基于 AMBA 的片上系统        一个典型的基于AMBA总线的系统框图如图3所示。        大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。APB 桥既是APB总线上唯一的主模块,也是AHB系统总线上的从模块。其主要功能是锁存来自AHB系统总...

【转】GPIO编程模拟I2C入门

ARM编程:ARM普通GPIO口线模拟I2C  请教个问题: 因为需要很多EEPROM进行点对点控制,所以我现在要用ARM的GPIO模拟I2C,管脚方向我设 置的是向外的。我用网上的RW24C08的万能程序修改了一下,先进行两根线的模拟,SDA6, SCL6,但是读出来的数不对。我做了一个简单的实验,模拟SDA6,SCL6输出方波,在示波 器上看到正确方波,也就是说,我的输出控制是没问题的。 哪位大哥能指点一下,是否在接收时管脚方向要设为向内?(不过IOPIN不管什么方向都可 以读出当前状态值的阿) 附修改的RW24C08()程序: #define  SomeNOP() delay(300); /**/ /* *********************************  RW24C08   **************************************** */ /**/ /* ----------------------------------------------------------------------------- ---  调用方式:void I2CInit(void)   函数说明:私有函数,I2C专用 ------------------------------------------------------------------------------- -- */ void  I2CInit( void ) ... {  IO0CLR  =  SCL6;      // 初始状态关闭总线  SomeNOP();  // 延时   I2CStop();  // 确保初始化,此时数据线是高电平 }   /**/ /* ---------------------------------------------------------------------------- ----  调用方式:void I2CSta...

【转】cs8900网卡的移植至基于linux2.6内核的s3c2410平台

cs8900网卡的移植至基于linux2.6内核的s3c2410平台(转) 2008-03-11 20:58 硬件环境:SBC-2410X开发板(CPU:S3C2410X) 内核版本:2.6.11.1 运行环境:Debian2.6.8 交叉编译环境:gcc-3.3.4-glibc-2.3.3 第一部分 网卡CS8900A驱动程序的移植 一、从网上将Linux内核源代码下载到本机上,并将其解压: #tar jxf linux-2.6.11.1.tar.bz2 二、打开内核顶层目录中的Makefile文件,这个文件中需要修改的内容包括以下两个方面。 (1)指定目标平台。 移植前:         ARCH?= $(SUBARCH) 移植后: ARCH            :=arm (2)指定交叉编译器。 移植前: CROSS_COMPILE ?= 移植后: CROSS_COMPILE   :=/opt/crosstool/arm-s3c2410-linux-gnu/gcc-3.3.4-glibc-2.3.3/bin/arm-s3c2410-linux-gnu- 注:这里假设编译器就放在本机的那个目录下。 三、添加驱动程序源代码,这涉及到以下几个方面。(1)、从网上下载了cs8900.c和cs8900.h两个针对2.6.7的内核的驱动程序源代码,将其放在drivers/net/arm/目录下面。 #cp cs8900.c ./drivers/net/arm/ #cp cs8900.h ./drivers/net/arm/ 并在cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句: __raw_writel(0x2211d110,S3C2410_BWSCON); __raw_writel(0x1f7c,S3C2410_BANKCON3); 注:其原因在"第二部分"解释。 (2)、修改drivers/net/arm/目录下的Kconfig文件,在最后添加如...