printf (Unix)
This article needs additional citations for verification. (July 2010) |
Developer(s) | Various open-source and commercial developers |
---|---|
Operating system | Unix and Unix-like |
Platform | Cross-platform |
Type | Command |
License | coreutils: GPLv3+[1] |
In Unix and Unix-like operating systems, printf ("print formatted") is a shell builtin (and utility program[2]) that formats and prints data.
The command accepts a printf format string, which specifies methods for formatting items, and a list of items to be formatted. Named historically after the intention of printing to a printer, it now actually outputs to stdout.[3] Characters in the format string are copied to the output or, if a %
is encountered, are used to format an item. In addition to the standard formats, %b
causes printf to expand backslash escape sequences (for example \n
for newline), and %q
outputs an item that can be used as shell input.[3] The format string is reused if there are more items than format specs. Unused format specs provide a zero value or null string.
History
printf
is part of the X/Open Portability Guide since issue 4 of 1992. It was inherited into the first version of POSIX.1 and the Single Unix Specification.[4] It first appeared in 4.3BSD-Reno.[5]
The version of printf
bundled in GNU coreutils was written by David MacKenzie. It has an extension %q for escaping strings in POSIX-shell format.[3]
Examples
$ for NUMBER in 4 6 8 9 10
> do printf " >> %03d %d<< \n" $NUMBER $RANDOM
> done
>> 004 26305<<
>> 006 6687<<
>> 008 20170<<
>> 009 28322<<
>> 010 4400<<
This will print a directory listing, emulating 'ls':
printf "%s\n" *
See also
- printf, the C function
References
- ^ "printf(1): format/print data - Linux man page". linux.die.net.
- ^ "GNU Coreutils". www.gnu.org.
- ^ a b c Linux User Manual – User Commands –
- ^ The Single UNIX Specification, Version 4 from The Open Group – Shell and Utilities Reference,
- ^ FreeBSD General Commands Manual –