curl in Mac OS X

By: Strauss K  

Transfer data from or to a server, using one of the protocols: HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE. (To transfer multiple files use wget or FTP.)

      curl [options...] url

Options: (H) means HTTP/HTTPS only, (F) means FTP only

 -a/--append          Append to target file when uploading (F)
 -A/--user-agent string User-Agent to send to server (H)
    --anyauth         Pick "any" authentication method (H)
 -b/--cookie name=string/file Cookie string or file to read cookies from (H)
    --basic           Use HTTP Basic Authentication (H)
 -B/--use-ascii       Use ASCII/text transfer
 -c/--cookie-jar file Write cookies to this file after operation (H)
 -C/--continue-at offset Resumed transfer offset
 -d/--data data       HTTP POST data (H)
    --data-ascii data  HTTP POST ASCII data (H)
    --data-binary data HTTP POST binary data (H)
    --negotiate       Use HTTP Negotiate Authentication (H)
    --digest          Use HTTP Digest Authentication (H)
    --disable-eprt    Inhibit using EPRT or LPRT (F)
    --disable-epsv    Inhibit using EPSV (F)
 -D/--dump-header file Write the headers to this file
    --egd-file file   EGD socket path for random data (SSL)
    --tcp-nodelay     Use the TCP_NODELAY option
 -e/--referer         Referer URL (H)
 -E/--cert cert[:passwd] Client certificate file and password (SSL)
    --cert-type type  Certificate file type (DER/PEM/ENG) (SSL)
    --key key         Private key file name (SSL/SSH)
    --key-type type   Private key file type (DER/PEM/ENG) (SSL)
    --pass  pass      Pass phrase for the private key (SSL/SSH)
    --pubkey key      Public key file name (SSH)
    --engine eng      Crypto engine to use (SSL). "--engine list" for list
    --cacert file     CA certificate to verify peer against (SSL)
    --capath directory CA directory (made using c_rehash) to verify peer against (SSL)
    --ciphers list    SSL ciphers to use (SSL)
    --compressed      Request compressed response (using deflate or gzip)
    --connect-timeout seconds Maximum time allowed for connection
    --create-dirs     Create necessary local directory hierarchy
    --crlf            Convert LF to CRLF in upload
 -f/--fail            Fail silently (no output at all) on HTTP errors (H)
    --ftp-account data Account data to send when requested by server (F)
    --ftp-alternative-to-user String to replace "USER [name]" (F)
    --ftp-create-dirs Create the remote dirs if not present (F)
    --ftp-method [multicwd/nocwd/singlecwd] Control CWD usage (F)
    --ftp-pasv        Use PASV/EPSV instead of PORT (F)
    --ftp-skip-pasv-ip Skip the IP address for PASV (F)
    --ftp-ssl         Try SSL/TLS for ftp transfer (F)
    --ftp-ssl-control Require SSL/TLS for ftp login, clear for transfer (F)
    --ftp-ssl-reqd    Require SSL/TLS for ftp transfer (F)
    --ftp-ssl-ccc     Send CCC after authenticating (F)
    --ftp-ssl-ccc-mode [active/passive] Set CCC mode (F)
 -F/--form name=content Specify HTTP multipart POST data (H)
    --form-string name=string Specify HTTP multipart POST data (H)
 -g/--globoff         Disable URL sequences and ranges using {} and []
 -G/--get             Send the -d data with a HTTP GET (H)
 -h/--help            This help text
 -H/--header line     Custom header to pass to server (H)
    --ignore-content-length  Ignore the HTTP Content-Length header
 -i/--include         Include protocol headers in the output (H/F)
 -I/--head            Show document info only
 -j/--junk-session-cookies Ignore session cookies read from file (H)
    --interface interface Specify network interface/address to use
    --krb level       Enable kerberos with specified security level (F)
 -k/--insecure        Allow connections to SSL sites without certs (H)
 -K/--config          Specify which config file to read
    --libcurl file    Dump libcurl equivalent code of this command line
 -l/--list-only       List only names of an FTP directory (F)
    --limit-rate rate Limit transfer speed to this rate
    --local-port num[-num] Force use of these local port numbers

 -L/--location        Follow Location: hints (H)
    --location-trusted Follow Location: and send authentication even 
                      to other hostnames (H)
 -m/--max-time seconds Maximum time allowed for the transfer
    --max-redirs num  Maximum number of redirects allowed (H)
    --max-filesize bytes Maximum file size to download (H/F)
 -M/--manual          Display the full manual
 -n/--netrc           Must read .netrc for user name and password
    --netrc-optional  Use either .netrc or URL; overrides -n
    --ntlm            Use HTTP NTLM authentication (H)
 -N/--no-buffer       Disable buffering of the output stream
    --no-sessionid    Disable SSL session-ID reusing (SSL)
 -o/--output file     Write output to file instead of stdout
 -O/--remote-name     Write output to a file named as the remote file
 -p/--proxytunnel     Operate through a HTTP proxy tunnel (using CONNECT)
    --proxy-anyauth   Pick "any" proxy authentication method (H)
    --proxy-basic     Use Basic authentication on the proxy (H)
    --proxy-digest    Use Digest authentication on the proxy (H)
    --proxy-ntlm      Use NTLM authentication on the proxy (H)
 -P/--ftp-port address Use PORT with address instead of PASV (F)
 -q                   If used as the first parameter disables .curlrc
 -Q/--quote cmd       Send command(s) to server before file transfer (F/SFTP)
 -r/--range range     Retrieve a byte range from a HTTP/1.1 or FTP server
    --random-file file File for reading random data from (SSL)
    --raw             Pass HTTP "raw", without any transfer decoding (H)
 -R/--remote-time     Set the remote file's time on the local output
    --retry num       Retry request num times if transient problems occur
    --retry-delay seconds When retrying, wait this many seconds between each
    --retry-max-time seconds Retry only within this period
 -s/--silent          Silent mode. Don't output anything
 -S/--show-error      Show error. With -s, make curl show errors when they occur
    --socks4 host[:port] Use SOCKS4 proxy on given host + port
    --socks5 host[:port] Use SOCKS5 proxy on given host + port
    --stderr file Where to redirect stderr. - means stdout
 -t/--telnet-option OPT=val Set telnet option
    --trace file      Write a debug trace to the given file
    --trace-ascii file Like --trace but without the hex output
    --trace-time      Add time stamps to trace/verbose output
 -T/--upload-file file Transfer file to remote site
    --url URL         Set URL to work with
 -u/--user user[:password] Set server user and password
 -U/--proxy-user user[:password] Set proxy user and password
 -v/--verbose         Make the operation more talkative
 -V/--version         Show version number and quit
 -w/--write-out [format] What to output after completion
 -x/--proxy host[:port] Use HTTP proxy on given port
 -X/--request command Specify request command to use
 -y/--speed-time      Time needed to trig speed-limit abort. Defaults to 30
 -Y/--speed-limit     Stop transfer if below speed-limit for 'speed-time' secs
 -z/--time-cond time  Transfer based on a time condition
 -0/--http1.0         Use HTTP 1.0 (H)
 -1/--tlsv1           Use TLSv1 (SSL)
 -2/--sslv2           Use SSLv2 (SSL)
 -3/--sslv3           Use SSLv3 (SSL)
 -4/--ipv4            Resolve name to IPv4 address
 -6/--ipv6            Resolve name to IPv6 address
 -#/--progress-bar    Display transfer progress as a progress bar


Post a message to twitter (http/insecure):

$ curl -u myusername:mypassword -S -d status="Everything is OK"

Post a message to twitter (https):

$ curl -u myusername:mypassword -d "status=Everything is OK"

Download a file via http:

$ curl --user myusername:mypassword> image.jpg

Archived Comments

Most Viewed Articles (in macos )

Latest Articles (in macos)

Comment on this tutorial