Article · Wikipedia archive · Last revised May 28, 2026

Printf (Unix)

printf is a shell command that formats and outputs text like the same-named C function. It is available in a variety of Unix and Unix-like systems. Some shells implement the command as builtin and some provide it as a utility program

Last revised
May 28, 2026
Read time
≈ 2 min
Length
353 w
Citations
7
Source
printf
DevelopersVarious open-source and commercial developers
Operating systemUnix and Unix-like
PlatformCross-platform
TypeCommand
Licensecoreutils: GPLv3+1

printf is a shell command that formats and outputs text like the same-named C function. It is available in a variety of Unix and Unix-like systems. Some shells implement the command as builtin and some provide it as a utility program2

The command has similar syntax and semantics as the library function. The command outputs text to standard output3 as specified by a format string and a list of values. Characters of the format string are copied to the output verbatim except when a format specifier is found which causes a value to be output per the specifier.

The command has some aspects unlike the library function. In addition to the library function 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 value used for an unmatched specifier (too few values) is an empty string for %s or 0 for a numeric specifier. If there are more values than specifiers, then the command restarts processing the format string from its beginning,

The command 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 implementation bundled in GNU Core Utilities was written by David MacKenzie. It has an extension %q for escaping strings in POSIX-shell format.3

Examples

This prints a list of numbers:

$ for N in 4 8 10; do printf " >> %03d << \n" $N; done
 >> 004 <<
 >> 008 <<
 >> 010 <<

This produces output for a directory's content similar to ls:

$ printf "%s\n" *


References

References

  1. "printf(1): format/print data - Linux man page". linux.die.net. Archived from the original on 2018-11-21. Retrieved 2019-02-24.
  2. "GNU Coreutils". www.gnu.org. Archived from the original on 2004-02-05. Retrieved 2019-02-27.
  3. printf(1) – Linux User Manual – User Commands
  4. printf – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Group
  5. printf(1) – FreeBSD General Commands Manual
External links