FUNDAMENTALS A Complete Guide for Beginners
The “printf” is a command line-based utility in Linux that formats and prints arguments under the control of the format. The main purpose of “printf” is to write formatted output. In addition to the standard format specifications, the “printf” command interprets to expand backslash escape sequences, quote the argument in a way that can be reused as shell input, and output the date-time string.
In this article, you will learn to print formatted text and control precisely how to display information on your terminal with 8 practical examples using the “printf” command in Linux.
Syntax of “printf” Command in Linux
The basic syntax of the “printf” command is as follows:
printf [-v var] FORMAT [arguments]
- The options
[-v var]
assign the output to the shell variable VAR rather than display it on the standard output. - The
FORMAT
is a character string that contains three types of objects: plain characters, which are simply copied to the standard output; character escape sequences, which are converted and copied to the standard output; and format specifications, each of which causes printing of the next successive. - The
[arguments]
field refers to the formatted output based on the given formats.
Options of “printf” command in Linux
The “printf” command in Linux has only two options: -version
and -help
. These two options show the information related to the “printf” command and do not participate in function and formatting output with the “printf” command.
Here are the options of the “printf” command in Linux:
Option | Function |
---|---|
-version | Provides the current version information of the printf command. |
-help | Shows the help menu of the printf command. |
Format Specifiers of “printf” Command in Linux
The format specifier is a string that defines the arguments and way of formatting specifiers. Here is a list of some common format specifiers of the “printf” command with their functionalities:
Specifier | Function |
---|---|
%s | Reads the input as a string of characters. |
%b | Same as the string specifier but uses the argument to interpret escape sequences. |
%d | Shows the integral values. |
%x | Shows the hexadecimal values. |
%f | Shows the floating values. |
How to Use “printf” Command in Linux
To use the “printf” command in Linux, use the following steps:
- Open your terminal.
- Write the following command and press ENTER:
printf "Hello, Linux.\n"
Upon execution, the “printf” command prints the formatted text to your terminal.
8 Examples of Using “printf” command in Linux
Here are a few cases where you can use the printf
command in your Linux distribution:
1. Printing String Output
To print a specified string output, use the printf
command followed by %s
string specifier. A string is a sequence of characters that represent texts.
Here is the command to print a string output with a specified variable:
printf "Hello, This is %s.\n" $LOGNAME
This command prints the string output by replacing the string specifier (%s) with the variable name.
2. Interpreting Escape Sequences
You can interpret an escape sequence with a given argument, using the printf
command with the %b
specifier. The “%b” specifier is similar to the “%s” specifier except it allows us to interpret escape sequences. For example, to read backlashes for escape sequence interpretations use the below command:
printf "Hello, \nThis \nis \n%b.\n" $LOGNAME
As a result, the “printf” command with %b specifier prints the string output with appropriate newlines and interpretation of escape sequences.
Here are a few examples of escape sequences:
Item | Function |
---|---|
\\ | Backslash |
\t | Tab |
\a | Alert |
\b | Backspace |
\f | Form feed |
3. Formatting Numeric Values
To format numeric values, you can use the printf
command. Here are a few cases:
3.1 Integer Values
To format and print integer values, use the printf
command followed by the %d
specifiers. The “%d” is an integer specifier that shows the integral values.
Here is the command to print integers from different given number formats:
printf "%d\n" 123 0x7B 0173 123.00
The command formats and prints integer numbers from different number formats in separate lines.
3.2 Float Values
To print float values, you can apply the printf
command with the %f
specifier. The “%f” is a float specifier that prints numbers up to 6 points by default. For example, to format and print numbers to float numbers, use the below command:
printf "%f\n" 123 0x7B 0173 123.00
As you can see, the command treats different number representations as floating numbers and adds floating points up to 6. However, you can limit the decimal places to a certain point using the "%.<num>f"
specifier. Where, <num> is the number of float points you wish to see. For example:
Here is the command to limit the floating points to 2 points using a “printf” specifier:
printf "%.2f\n" 123 0x7B 0173 123.0
See from the image, the command formats and prints floating numbers up to 2 points.
3.3 Hexa Decimal Values
To format and print the hexadecimal values, use the printf
command along with the %X
or %x
specifiers. The “%X” and “%x” are hexadecimal specifiers that print the hexadecimal numbers in upper and lower cases respectively.
Here is the command to print hexadecimal numbers in upper cases:
printf "%X\n" 123 0xff 0277
Hence, the command converts different number representations and prints them in hexadecimal numbers in upper cases.
To format and print hexadecimal numbers in lower cases, run this command below:
printf "%x\n" 123 0xff 0277
In output, you get the hexadecimal in lower cases.
4. Printing Environmental Variables
To print the value of a specific environmental variable, you can use the printf
command. Here is the command:
printf "%b\n" "My shell is: "$SHELL
The command shows the value of the SHELL environmental variable for the specific user.
5. Printing Date and Time
To print the current date and time, you can again use the printf
command along with the date command:
today="$(date)"
printf "The current date & time is: %s\n" "$today"
Here, today="$(date)"
assigns the current date and time to a variable using the date command. And, printf "The current date & time is: %s\n" "$today"
prints the current date and time using printf
, where “%s” is replaced by the value stored in the variable.
6. Adding Two Numbers
To manually add two numbers you can use the printf
command. Here is an example:
printf "200+55=%d\n" $((200+55))
See the command calculates the sum of two numbers using an arithmetic expression.
7. Printing Number of Directories
To print the total number of directories in the current directory, use the printf
command with ls and wc command. Here is the combined command:
printf "Total directories are: %d\n" $(ls -d */ | wc -l)
Here, the “printf” displays the total number of directories in the current directory. The command part ls -d */
lists all the current directories and wc -l
counts them. The “printf” substitutes the count into the format string to output the total.
Subsequently, you get the total number of directories in your current directory.
8. Printing Symbols
To print Unicode symbols, you can use the printf
command. For example, to print the Celsius degree symbol (℃), use the command:
temperature=20
printf "Current temperature: %d\u2102\n" "$temperature"
Consequently, the command prints the Celsius degree symbol using the given Unicode character.
Conclusion
In summary, the “printf” command allows you to print string output, environmental variables, date/time, and format numbers, etc. You can also combine the command with its format specifiers, escape sequences, and other commands to create custom output, format data for reports, etc. For any suggestions or feedback, please don’t hesitate to reach us through the comment box.
People Also Ask
What is “printf” in Linux?
The “printf” is a command line-based utility in Linux that formats and prints arguments under the control of the format. The main purpose of “printf” is to write formatted output. It is like the printf() function in the C programming language, where a format string is given to a set of arguments to return specific output.
Can we use “printf” in shell script?
Yes, you can use the “printf” command in the shell script. Bash “printf” allows printing text on a terminal with various formatting options. It’s particularly useful for printing in a shell script to display data in a specific format. You can also use it directly on the command line for quick output formatting.
What is the difference between “printf” of bash shell, and /usr/bin/printf?
The main difference is that the bash built-in “printf” supports the %q
format specifier, which prints escape symbols alongside characters for safe shell input, while /usr/bin/printf does not support %q
.
In which case should I use “printf” command instead of echo command in Linux?
Instead of echo, you should use the printf command if you want to print formatted output. The echo command is useful for basic text output, while “printf” controls the output formatting more precisely.
Can “printf” command print to a file at the same line in Linux shell bash script?
Yes, the “printf” command can print to a file on the same line in a Linux shell bash script. You just redirect the output of printf to the file using the append redirection (>>) operator. Here’s an example: printf "Hello, Linux" >> output.txt
. This command will print the text to the file without moving to the next line.
Similar Readings
- The “grep” Command in Linux [10+ Practical Examples]
- The “wc” Command in Linux [15 Practical Examples]
- The “sort” Command in Linux [16 Practical Examples]
- The “nano” Command in Linux [13 Practical Examples]
- The “cut” Command in Linux [8 Practical Examples]
- The “jed” Command in Linux [8 Practical Examples]
- The “vi” Command in Linux [6 Practical Examples]
- The “vim” Command in Linux [8 Practical Examples]
- The “egrep” Command in Linux [10+ Practical Examples]
- The “paste” Command in Linux [6 Practical Examples]
- The “split” Command in Linux [6 Practical Examples]
- The “sed” Command in Linux [7 Practical Examples]
- The “tr” Command in Linux [6 Practical Examples]
- The “uniq” Command in Linux [6 Practical Examples]