printf (Unix)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
printf
DevelopersVarious open-source and commercial developers
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    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 program[2]

    The command has similar syntax and semantics as the library function. The command outputs text to standard output[3] 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

    [edit | edit source]

    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

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ a b c printf(1) – Linux User Manual – User Commands from Manned.org
    4. ^ printf – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Group
    5. ^ printf(1) – FreeBSD General Commands Manual
    [edit | edit source]