123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- c: Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
- SPDX-License-Identifier: curl
- Long: write-out
- Short: w
- Arg: <format>
- Help: Use output FORMAT after completion
- Category: verbose
- Example: -w '%{response_code}\\n' $URL
- Added: 6.5
- See-also: verbose head
- Multi: single
- ---
- Make curl display information on stdout after a completed transfer. The format
- is a string that may contain plain text mixed with any number of
- variables. The format can be specified as a literal "string", or you can have
- curl read the format from a file with "@filename" and to tell curl to read the
- format from stdin you write "@-".
- The variables present in the output format are substituted by the value or
- text that curl thinks fit, as described below. All variables are specified as
- %{variable_name} and to output a normal % you just write them as %%. You can
- output a newline by using \\n, a carriage return with \\r and a tab space with
- \\t.
- The output is by default written to standard output, but can be changed with
- %{stderr} and %output{}.
- Output HTTP headers from the most recent request by using *%header{name}*
- where *name* is the case insensitive name of the header (without the trailing
- colon). The header contents are exactly as sent over the network, with leading
- and trailing whitespace trimmed (added in 7.84.0).
- Select a specific target destination file to write the output to, by using
- *%output{name}* (added in curl 8.3.0) where *name* is the full file name. The
- output following that instruction is then written to that file. More than one
- *%output{}* instruction can be specified in the same write-out argument. If
- the file name cannot be created, curl leaves the output destination to the one
- used prior to the *%output{}* instruction. Use *%output{>>name}* to append
- data to an existing file.
- **NOTE:**
- In Windows the %-symbol is a special symbol used to expand environment
- variables. In batch files all occurrences of % must be doubled when using this
- option to properly escape. If this option is used at the command prompt then
- the % cannot be escaped and unintended expansion is possible.
- The variables available are:
- .RS
- .TP 15
- **certs**
- Output the certificate chain with details. Supported only by the OpenSSL,
- GnuTLS, Schannel and Secure Transport backends. (Added in 7.88.0)
- .TP
- **content_type**
- The Content-Type of the requested document, if there was any.
- .TP
- **errormsg**
- The error message. (Added in 7.75.0)
- .TP
- **exitcode**
- The numerical exit code of the transfer. (Added in 7.75.0)
- .TP
- **filename_effective**
- The ultimate filename that curl writes out to. This is only meaningful if curl
- is told to write to a file with the --remote-name or --output
- option. It's most useful in combination with the --remote-header-name
- option. (Added in 7.26.0)
- .TP
- **ftp_entry_path**
- The initial path curl ended up in when logging on to the remote FTP
- server. (Added in 7.15.4)
- .TP
- **header_json**
- A JSON object with all HTTP response headers from the recent transfer. Values
- are provided as arrays, since in the case of multiple headers there can be
- multiple values. (Added in 7.83.0)
- The header names provided in lowercase, listed in order of appearance over the
- wire. Except for duplicated headers. They are grouped on the first occurrence
- of that header, each value is presented in the JSON array.
- .TP
- **http_code**
- The numerical response code that was found in the last retrieved HTTP(S) or
- FTP(s) transfer.
- .TP
- **http_connect**
- The numerical code that was found in the last response (from a proxy) to a
- curl CONNECT request. (Added in 7.12.4)
- .TP
- **http_version**
- The http version that was effectively used. (Added in 7.50.0)
- .TP
- **json**
- A JSON object with all available keys. (Added in 7.70.0)
- .TP
- **local_ip**
- The IP address of the local end of the most recently done connection - can be
- either IPv4 or IPv6. (Added in 7.29.0)
- .TP
- **local_port**
- The local port number of the most recently done connection. (Added in 7.29.0)
- .TP
- **method**
- The http method used in the most recent HTTP request. (Added in 7.72.0)
- .TP
- **num_certs**
- Number of server certificates received in the TLS handshake. Supported only by
- the OpenSSL, GnuTLS, Schannel and Secure Transport backends.
- (Added in 7.88.0)
- .TP
- **num_connects**
- Number of new connects made in the recent transfer. (Added in 7.12.3)
- .TP
- **num_headers**
- The number of response headers in the most recent request (restarted at each
- redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
- .TP
- **num_redirects**
- Number of redirects that were followed in the request. (Added in 7.12.3)
- .TP
- **onerror**
- The rest of the output is only shown if the transfer returned a non-zero error.
- (Added in 7.75.0)
- .TP
- **proxy_ssl_verify_result**
- The result of the HTTPS proxy's SSL peer certificate verification that was
- requested. 0 means the verification was successful. (Added in 7.52.0)
- .TP
- **redirect_url**
- When an HTTP request was made without --location to follow redirects (or when
- --max-redirs is met), this variable shows the actual URL a redirect
- *would* have gone to. (Added in 7.18.2)
- .TP
- **referer**
- The Referer: header, if there was any. (Added in 7.76.0)
- .TP
- **remote_ip**
- The remote IP address of the most recently done connection - can be either
- IPv4 or IPv6. (Added in 7.29.0)
- .TP
- **remote_port**
- The remote port number of the most recently done connection. (Added in 7.29.0)
- .TP
- **response_code**
- The numerical response code that was found in the last transfer (formerly
- known as "http_code"). (Added in 7.18.2)
- .TP
- **scheme**
- The URL scheme (sometimes called protocol) that was effectively used. (Added in 7.52.0)
- .TP
- **size_download**
- The total amount of bytes that were downloaded. This is the size of the
- body/data that was transferred, excluding headers.
- .TP
- **size_header**
- The total amount of bytes of the downloaded headers.
- .TP
- **size_request**
- The total amount of bytes that were sent in the HTTP request.
- .TP
- **size_upload**
- The total amount of bytes that were uploaded. This is the size of the
- body/data that was transferred, excluding headers.
- .TP
- **speed_download**
- The average download speed that curl measured for the complete download. Bytes
- per second.
- .TP
- **speed_upload**
- The average upload speed that curl measured for the complete upload. Bytes per
- second.
- .TP
- **ssl_verify_result**
- The result of the SSL peer certificate verification that was requested. 0
- means the verification was successful. (Added in 7.19.0)
- .TP
- **stderr**
- From this point on, the --write-out output is written to standard
- error. (Added in 7.63.0)
- .TP
- **stdout**
- From this point on, the --write-out output is written to standard output.
- This is the default, but can be used to switch back after switching to stderr.
- (Added in 7.63.0)
- .TP
- **time_appconnect**
- The time, in seconds, it took from the start until the SSL/SSH/etc
- connect/handshake to the remote host was completed. (Added in 7.19.0)
- .TP
- **time_connect**
- The time, in seconds, it took from the start until the TCP connect to the
- remote host (or proxy) was completed.
- .TP
- **time_namelookup**
- The time, in seconds, it took from the start until the name resolving was
- completed.
- .TP
- **time_pretransfer**
- The time, in seconds, it took from the start until the file transfer was just
- about to begin. This includes all pre-transfer commands and negotiations that
- are specific to the particular protocol(s) involved.
- .TP
- **time_redirect**
- The time, in seconds, it took for all redirection steps including name lookup,
- connect, pretransfer and transfer before the final transaction was
- started. time_redirect shows the complete execution time for multiple
- redirections. (Added in 7.12.3)
- .TP
- **time_starttransfer**
- The time, in seconds, it took from the start until the first byte is received.
- This includes time_pretransfer and also the time the server needed to calculate
- the result.
- .TP
- **time_total**
- The total time, in seconds, that the full operation lasted.
- .TP
- **url**
- The URL that was fetched. (Added in 7.75.0)
- .TP
- **url.scheme**
- The scheme part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.user**
- The user part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.password**
- The password part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.options**
- The options part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.host**
- The host part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.port**
- The port number of the URL that was fetched. If no port number was specified,
- but the URL scheme is known, that scheme's default port number is
- shown. (Added in 8.1.0)
- .TP
- **url.path**
- The path part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.query**
- The query part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.fragment**
- The fragment part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **url.zoneid**
- The zone id part of the URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.scheme**
- The scheme part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.user**
- The user part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.password**
- The password part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.options**
- The options part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.host**
- The host part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.port**
- The port number of the effective (last) URL that was fetched. If no port
- number was specified, but the URL scheme is known, that scheme's default port
- number is shown. (Added in 8.1.0)
- .TP
- **urle.path**
- The path part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.query**
- The query part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.fragment**
- The fragment part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urle.zoneid**
- The zone id part of the effective (last) URL that was fetched. (Added in 8.1.0)
- .TP
- **urlnum**
- The URL index number of this transfer, 0-indexed. Unglobbed URLs share the
- same index number as the origin globbed URL. (Added in 7.75.0)
- .TP
- **url_effective**
- The URL that was fetched last. This is most meaningful if you have told curl
- to follow location: headers.
- .RE
- .IP
|