printf – Format and output the result

printf is a command in Linux that is used to format and output the result. It is used to print the output of a command or a string to the standard output (stdout) or a file. It is similar to the echo command, but it provides more control over the output format.


The printf command uses a format string to specify the output format. The format string can contain placeholders for variables, which are replaced by their values. The syntax of the printf command is as follows:


Here, FORMAT is the format string, and ARGUMENT is the variable to be printed. The format string can contain placeholders in the form of %[FLAGS][WIDTH][.PRECISION]TYPE. Each placeholder is replaced by the corresponding argument.


  1. Print a string to stdout:
$ printf "Hello, World!\n"
Hello, World!
  1. Print the value of a variable to stdout:
$ name="John"
$ printf "My name is %s.\n" $name
My name is John.
  1. Print the output of a command to stdout:
$ printf "The current directory is %s.\n" $(pwd)
The current directory is /home/user.

Specific use cases

The printf command can be used in various scenarios, including:

  • Formatting output for scripts
  • Printing messages to users
  • Creating formatted reports
  • Generating output for log files


The printf command has several options that can be used to modify its behavior. The following table lists the available options:

Option Description
-v var Assign the output to the variable var.
-n Do not add a newline character at the end of the output.
-e Interpret backslash escapes in the format string.
-s Print the output to a file instead of stdout.

Troubleshooting tips

  • Make sure that the format string is correct and contains the correct number of placeholders.
  • Check that the arguments are in the correct order and match the placeholders in the format string.
  • Use the -v option to assign the output to a variable for further processing.


  • The format string can contain escape sequences, such as \n for a newline character.
  • The printf command is more powerful than the echo command because it allows for more control over the output format.