Jump to content

printf (Unix)

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
printf
Developer(s)Various open-source and commercial developers
Operating systemUnix and Unix-like
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+[1]

In Unix and Unix-like operating systems, printf is a shell builtin (and utility program[2]) that formats and outputs text like the same-named C function.

Originally named for outputting to a printer, it actually outputs to standard output.[3]

The command accepts a format string, which specifies how to format values, and a list of values.

Characters in the format string are copied to the output verbatim except when a format specifier is found which causes a value to be output.

In addition to the standard format specifiers, %b causes the command 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

References

  1. ^ "printf(1): format/print data - Linux man page". linux.die.net.
  2. ^ "GNU Coreutils". www.gnu.org.
  3. ^ a b c printf(1) – Linux User Manual – User Commands
  4. ^ printf – Shell and Utilities Reference, The Single UNIX Specification, Version 4 from The Open Group
  5. ^ printf(1) – FreeBSD General Commands Manual