diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man1/printf.1 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man1/printf.1')
| -rw-r--r-- | static/netbsd/man1/printf.1 | 555 |
1 files changed, 555 insertions, 0 deletions
diff --git a/static/netbsd/man1/printf.1 b/static/netbsd/man1/printf.1 new file mode 100644 index 00000000..6d4bd56d --- /dev/null +++ b/static/netbsd/man1/printf.1 @@ -0,0 +1,555 @@ +.\" $NetBSD: printf.1,v 1.41 2024/11/24 12:33:31 kre Exp $ +.\" +.\" Copyright (c) 1989, 1990, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" This code is derived from software contributed to Berkeley by +.\" the Institute of Electrical and Electronics Engineers, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" from: @(#)printf.1 8.1 (Berkeley) 6/6/93 +.\" +.Dd November 24, 2024 +.Dt PRINTF 1 +.Os +.Sh NAME +.Nm printf +.Nd formatted output +.Sh SYNOPSIS +.Nm +.Op Fl L +.Ar format +.Op Ar argument ... +.Sh DESCRIPTION +.Nm +formats and prints its +.Ar argument Ns s , +under control of the +.Ar format . +The +.Ar format +is a character string which contains three types of objects: +plain characters, which are simply copied to standard output, +character escape sequences which are converted and copied to the +standard output, +and format specifications, each of which causes printing of the next +successive +.Ar argument . +Each +.Ar argument +is used only once. +.Pp +If the first character of +.Ar format +is a dash +.Pq Sq Fl , +.Ar format +must (and always may) be preceded by a word consisting of +two dashes +.Pq Sq Fl Fl +to prevent it +from being interpreted as an option string. +See +.Xr getopt 3 . +.Pp +The +.Fl L +option causes all floating point values resulting from format +conversions to be printed using +.Vt long double +formats, rather than the default +.Vt double . +.Pp +The +.Ar argument Ns s +after the first are treated as strings if the corresponding format is +either +.Cm b , +.Cm B , +.Cm c , +or +.Cm s ; +otherwise each is evaluated as a C\~constant, with the following extensions: +.Bl -bullet -offset indent +.It +A leading plus or minus sign is allowed. +.It +If the leading character is a single or double quote, +as part of the +.Ar argument +rather than just quoting it for the shell, +the value is the code of the character following that quote character. +No further characters are permitted. +.El +.Pp +The format string is reused as often as necessary to satisfy the +.Ar arguments . +Any extra format specifications are evaluated with zero or the null +string. +.Pp +Character escape sequences are in backslash notation as defined in +.St -ansiC . +The characters and their meanings are as follows: +.Bl -tag -offset indent -width Cm +.It Cm \ea +Write a +.Aq bell +character. +.It Cm \eb +Write a +.Aq backspace +character. +.It Cm \ee +Write an +.Aq escape +character. +.It Cm \ef +Write a +.Aq form-feed +character. +.It Cm \en +Write a +.Aq new-line +character. +.It Cm \er +Write a +.Aq carriage return +character. +.It Cm \et +Write a +.Aq tab +character. +.It Cm \ev +Write a +.Aq vertical tab +character. +.It Cm \e\(aq +Write a +.Aq single quote +character. +.It Cm \e\*q +Write a +.Aq double quote +character. +.It Cm \e\e +Write a backslash character. +.It Cm \e Ns Ar num +Write an 8-bit character whose ASCII +value is the 1-, 2-, or 3-digit octal number +.Ar num . +.It Cm \ex Ns Ar XX +Write an 8-bit character whose ASCII +value is the 1- or 2-digit hexadecimal number +.Ar XX . +.El +.Pp +Each format specification is introduced by the percent character +.Pq Ql \&% . +To produce a literal percent +.Pq Ql \&% +in the output, write the percent character twice: +.Pq Ql \&%% . +This is not a format conversion, +but a special escape sequence, +and consumes no +.Ar argument Ns s . +The remainder of the format specification includes, +in the following order: +.Bl -tag -width 5n +.It Zero or more of the following unordered flags : +.Bl -tag -width Cm +.It Cm # +A +.Ql \&# +character specifying that the value should be printed in an +.Dq alternative form . +For +.Cm b , +.Cm c , +.Cm C , +.Cm d , +and +.Cm s +formats, this option has no effect. +For the +.Cm o +format the precision of the number is increased to cause the first +character of the numeric output string to be a zero. +For the +.Cm x +.Pq Cm X +format, a non-zero result has the string +.Ql 0x +.Pq Ql 0X +prepended to it. +For +.Cm e , +.Cm E , +.Cm f , +.Cm F , +.Cm g , +and +.Cm G +formats, the result will always contain a decimal point, even if no +digits follow the point (normally, a decimal point only appears in the +results of those formats if a digit follows the decimal point). +For +.Cm g +and +.Cm G +formats, trailing zeros are not removed from the result as they +would otherwise be. +.\" I turned this off - decided it isn't a valid use of '#' +.\" For the +.\" .Cm B +.\" format, backslash-escape sequences are expanded first; +.It Cm \&\- +A minus sign which specifies +.Em left adjustment +of the output in the indicated field; +.It Cm \&+ +A plus sign which specifies that there should always be +a sign +.Po Sq Cm \&+ +or +.Sq Cm \&\- +.Pc +placed before the number when using signed formats; +.It Sq Cm \&\ \& +A +.Aq space +character which specifies that a space should be left in the +position a minus sign would otherwise appear, before +a non-negative number for a signed format. +A +.Ql Cm \&+ +overrides a +.Aq space +if both are used; +.It Cm \&0 +A digit zero character which specifies that zero-padding should be used +rather than space-padding to the left of right adjusted fields. +In this case, a sign +.Po Sq Cm \&+ , +.Sq Cm \&\- +or +.Sq Cm \&\ \& +.Pc , +if included, precedes the padding. +Padding to the right of left adjusted fields always uses spaces. +A +.Ql \- +overrides a +.Ql \&0 +if both are used; +.El +.Pp +Specifying a flag more than once is not an error, but has no additional effect. +.It Field Width : +An optional digit string specifying a +.Em field width ; +if the output string has fewer bytes than the field width it will +be padded on the left (or right, if the left-adjustment indicator +has been given) to make up the field width +(note that a leading zero is a flag, +but a zero appearing after another digit is part of a field width); +.It Precision : +An optional period +.Pq Ql \&. , +followed by an optional digit string giving a +.Em precision +which specifies the number of digits to appear after the decimal point, +for +.Cm e +and +.Cm f +formats, or the maximum number of bytes to be printed +from a string +.Sm off +.Pf ( Cm b , +.Sm on +.Cm B , +and +.Cm s +formats); if the digit string is missing, the precision is treated +as zero; +.It Format : +A character which indicates the type of format to use (one of +.Cm diouxXfFeEgGaAbBcCs ) . +.El +.Pp +A field width or precision may be +.Sq Cm \&* +instead of a digit string. +In this case the next +.Ar argument , +preceding the value to be converted, +supplies the field width or precision. +It must be an unsigned integer constant. +If both the field width and precision are +.Sq Cm \&* +then two +.Ar argument Ns s +are required, with the field width preceding the precision, +and the value to be converted following those. +.Pp +The format characters and their meanings are: +.Bl -tag -width Fl +.It Cm diouXx +The +.Ar argument , +which must represent an integer constant, +with an optional leading plus or minus sign, +is printed as a signed decimal +.Cm ( d +or +.Cm i ) , +unsigned octal +.Cm ( o ) , +unsigned decimal +.Cm ( u ) , +or unsigned hexadecimal +.Cm ( X +or +.Cm x ) . +.It Cm fF +The +.Ar argument +is printed in the style +.Oo Li \&\- Oc Ns Ar \&\^ddd Ns Li \&\^\&. Ns Ar ddd +where the number of +.Ar d Ns \|'s +after the decimal point is equal to the precision specification for +the argument. +If the precision is missing, 6 digits are given; if the precision +is explicitly 0, no digits and no decimal point are printed. +If the number is Infinity, or Not-a-Number, then +.Ql inf +or +.Ql nan +is printed for +.Cm f +format, and +.Ql INF +or +.Ql NAN +for +.Cm F +format. +.It Cm eE +The +.Ar argument +is printed in the style +.Oo Li \&\- Oc Ns Ar \&\^d Ns Li \&. Ns Ar ddd Ns Li \&\|e\*(Pm Ns Ar \&\|dd +where there +is one digit before the decimal point and the number after is equal to +the precision specification for the argument; when the precision is +missing, 6 digits are produced. +An upper-case +.Ql E +is used for an +.Cm E +format, and upper-case for Infinity and NaN as for +.Cm F +format. +.It Cm gG +The +.Ar argument +is printed in style +.Cm f +.Pq Cm F +or in style +.Cm e +.Pq Cm E +whichever gives full precision in minimum space. +.It Cm aA +The +.Ar argument +is treated as a floating point number, +for which the underlying hexadecimal representation is +printed. +See +.Xr printf 3 +for the details. +.It Cm b +Characters from the string +.Ar argument +are printed with backslash-escape sequences expanded. +.Pp +The following additional backslash-escape sequences are supported: +.Bl -tag -width Cm +.It Cm \ec +Causes +.Nm +to ignore any remaining characters in the string operand containing it, +any remaining operands, and any additional characters in +the format operand. +.It Cm \e0 Ns Ar num +Write an 8-bit character whose ASCII value is the 1-, 2-, or +3-digit octal number +.Ar num . +.It Cm \e^ Ns Ar c +Write the control character +.Ar c . +Generates characters +.Sq \e000 +through +.Sq \e037 , +and +.Sq \e177 +(from +.Ql \e^\&? ) . +.It Cm \eM^ Ns Ar c +Write the control character +.Ar c +with the 8th bit set. +Generates characters +.Sq \e200 +through +.Sq \e237 , +and +.Sq \e377 +(from +.Ql \eM^\&? ) . +.It Cm \eM\- Ns Ar c +Write the character +.Ar c +with the 8th bit set. +Generates characters +.Sq \e240 +through +.Sq \e376 . +.El +.It Cm B +Characters from the string +.Ar argument +are printed with unprintable characters backslash-escaped using the +.Sq Cm \e Ns Ar c , +.Sq Cm \e^ Ns Ar c , +.Sq Cm \eM^ Ns Ar c , +or +.Sq Cm \eM\- Ns Ar c +formats described above. +.It Cm c +The first character of the next +.Ar argument +is printed. +.It Cm C +The +.Ar argument , +which must represent an integer constant, +with an optional leading plus or minus sign, +is treated as a wide character code point, and printed. +.It Cm s +Characters from the string +.Ar argument +are printed until the end is reached or until the number of bytes +indicated by the precision specification is reached; if the +precision is omitted, all characters in the string are printed. +.El +.Pp +In no case does a non-existent or small field width cause truncation of +a field; padding takes place only if the specified field width exceeds +the actual width. +.Pp +If an argument required by a format string is present, but is not in +a format expected by the format string conversion, a warning will be +printed to standard error, identifying the argument by number +.Pq 1 is the first after the format string +and usually also by content. +In such a case a value will still be produced, and printed, +and processing will continue, but +.Nm +will eventually exit with a failure status. +.Sh EXIT STATUS +.Ex -std +.Sh SEE ALSO +.Xr echo 1 , +.Xr printf 3 , +.Xr vis 3 , +.Xr printf 9 +.Sh STANDARDS +The +.Nm +utility conforms to +.St -p1003.1-2001 . +.Pp +Support for the floating point formats and +.Sq Cm \&* +as a field width and precision +are optional in POSIX. +.Pp +The behaviour of the +.Cm \&%B +and +.Cm \&%C +formats and the +.Cm \e\(aq , +.Cm \e\*q , +.Cm \ee , +.Cm \ex Ns Ar XX , +and +.Cm \e Ns Oo Cm M Oc Ns Oo Cm \- Ns Li \&\(or Ns Cm ^ Oc Ns Ar c +escape sequences are undefined in POSIX. +.Sh BUGS +Since the floating point numbers are translated from ASCII to +floating-point and then back again, floating-point precision may be lost. +.Pp +Hexadecimal character constants given as escapes in strings are +restricted to, and should be specified as, two hexadecimal characters. +This is contrary to the ISO C standard but +does guarantee detection of the end of the constant. +.Sh NOTES +All formats which treat the +.Ar argument +as a number first convert the +.Ar argument +from its external representation as a character string +to an internal numeric representation, and then apply the +format to the internal numeric representation, producing +another external character string representation. +One might expect the +.Cm \&%c +format to do likewise, but in fact it does not. +.Pp +To convert a string representation of a decimal, octal, or hexadecimal +number into the corresponding character, +using a portable invocation, +two nested +.Nm +invocations may be used, in which the inner invocation +converts the input to an octal string, and the outer +invocation uses the octal string as part of a format. +For example, the following command outputs the character whose code +is 0x0a, which is a newline in ASCII: +.Pp +.Dl printf \*q$(printf \(aq\e\e%o\(aq 0x0a)\*q +.Pp +In this implementation of +.Nm +it is possible to achieve the same result using one invocation: +.Pp +.Dl printf %C 0x0a |
