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 的用法可以显著提升输出的可读性和美观性。