Linux printf 命令简介

321 阅读2分钟

Linux printf 命令简介

printf 是 Linux 中非常强大的命令,用于格式化和打印输出。它与 C 语言中的 printf 函数类似,但在命令行环境下使用。与 echo 命令相比,printf 提供了更强的格式控制能力。

基本语法

printf FORMAT [ARGUMENT]...
  • FORMAT:格式字符串,定义了输出的格式。
  • ARGUMENT:格式字符串中指定的格式对应的值。

常用格式符

  • %s:字符串
  • %d%i:十进制整数
  • %o:八进制数
  • %x%X:十六进制数
  • %f:浮点数
  • %c:单个字符
  • %%:百分号(输出百分号本身)

示例

1. 打印字符串

printf "Hello, %s!\n" "world"

输出:

Hello, world!

2. 打印整数和浮点数

printf "Number: %d\n" 42
printf "Pi approximately: %.2f\n" 3.14159

输出:

Number: 42
Pi approximately: 3.14

在第二个例子中,%.2f 表示保留两位小数的浮点数。

3. 通过多个参数生成格式化输出

printf "%s is %d years old.\n" "Alice" 30

输出:

Alice is 30 years old.

4. 控制宽度与对齐

printf "|%10s|\n" "text"
printf "|%-10s|\n" "text"

输出:

|      text|
|text      |

在第一个例子中,%10s 右对齐并填充空格。第二个例子使用 %-10s 实现左对齐。

5. 打印多个值

printf "Item: %s, Price: $%d\n" "Book" 25 "Pen" 2

输出:

Item: Book, Price: $25
Item: Pen, Price: $2

printf 会根据格式字符串重复使用,直到所有的参数都被处理完。

6. 使用转义序列

printf "This is a tab:\tAnd this is a new line:\n"

输出:

This is a tab:    And this is a new line:

特殊注意事项

  • 不自动换行printf 不会像 echo 那样在输出后自动换行。如果需要换行,必须在格式字符串中显式地包含 \n
  • 参数不够时的行为:如果格式字符串中需要的参数多于提供的参数,printf 会将缺失的参数视为空字符串或 0。

常见用法

打印列格式的输出

printf "%-10s %-10s %-10s\n" "Name" "Age" "Occupation"
printf "%-10s %-10s %-10s\n" "Alice" 30 "Engineer"
printf "%-10s %-10s %-10s\n" "Bob" 25 "Designer"

输出:

Name       Age        Occupation
Alice      30         Engineer  
Bob        25         Designer  

生成零填充数字

printf "%04d\n" 7

输出:

0007

总结

printf 是 Linux 中一个非常灵活的命令,能够精确地控制输出格式。无论是简单的字符串打印,还是复杂的格式化输出,printf 都能够胜任。在编写脚本或命令行操作时,掌握 printf 的用法可以显著提升输出的可读性和美观性。