Linux printf命令详解

1. 简介与语法

printf 是 Linux 下强大的格式化输出命令,功能与 C 语言的 printf() 函数类似,能精确控制文本、数字的显示格式。

基本语法:

bash

复制代码
printf FORMAT [ARGUMENT]...

FORMAT 即格式字符串,控制输出样式;ARGUMENT 是被格式化的数据。printf 默认不会在输出末尾自动添加换行符。

主要优势:

  • 精确控制输出格式 :宽度、精度、对齐、数据类型转换等;
  • 处理多种数据类型 :整数、浮点数、字符串、特殊字符等;
  • echo 更灵活可靠 :尤其适合脚本开发、生成报告或日志。

2. 格式化说明符

说明符 描述 示例(输出)
%s 字符串 printf "%s\n" "Hello" → Hello
%d, %i 十进制整数 printf "%d\n" 42 → 42
%f 浮点数 printf "%f\n" 3.14159 → 3.141590
%.2f 浮点数(两位小数) printf "%.2f\n" 3.14159 → 3.14
%e, %E 科学计数法 printf "%e\n" 1000 → 1.000000e+03
%x, %X 十六进制整数 printf "%x\n" 255 → ff
%o 八进制整数 printf "%o\n" 8 → 10
%c 单个字符 printf "%c\n" "ABC" → A
%% 输出百分号 % printf "%%\n" → %
%b 对参数中的转义字符进行解析 printf "%b\n" "Hello\nWorld"

%b 会将参数中的 \n、\t 等转义字符进行解析,而普通的 %s 则不会。


3. 转义字符

转义序列 含义 说明
\n 换行符 将光标移至下一行开头
\r 回车符 将光标移至当前行开头
\t 水平制表符 用于对齐文本
\v 垂直制表符 将光标移至下一行(同列)
\b 退格符 删除前一个字符
\a 报警符 触发系统的报警声
\ 反斜杠 输出 \ 本身
" 双引号 输出 " 本身
\f 换页符 将光标移至下一页开头
\e Escape 字符 ASCII 码 27(ESC)
\c 强制结束输出 后续内容不再输出
\0NNN 八进制字节 由 1 至 3 位八进制数表示
\xHH 十六进制字节 由 1 至 2 位十六进制数表示
\uHHHH Unicode 字符 4 位十六进制值
\UHHHHHHHH Unicode 字符 8 位十六进制值

这些转义序列均直接应用于 FORMAT 字符串中。


4. 格式修饰符

除了基本的说明符,还可以添加修饰符以更精细地控制输出:

修饰符 作用 示例
宽度 在说明符中指定最小字符宽度 %10s → 宽度至少 10 个字符,右对齐
- 左对齐(默认右对齐) %-10s → 宽度 10,左对齐
精度 控制字符串最大长度或小数位数 %.2f → 保留两位小数 %.5s → 最多输出 5 个字符
组合 同时指定宽度和精度 %8.2f → 总宽 8,保留 2 位小数
0 用 0 填充空白(仅对数值有效) %05d → 数字宽度至少 5 位,不足补 0
* 从参数中动态获取宽度和精度 %*.*f → 宽度和精度由参数提供

这些修饰符为创建对齐表格、控制数值显示等复杂输出提供了极大的灵活性。


5. 常用选项

选项 功能描述
-v VAR 将格式化后的输出赋值给变量 VAR,而非打印到屏幕
--help 显示帮助信息并退出
--version 显示版本信息并退出

-v 选项在脚本中非常实用,可将格式化的文本存入变量,供后续使用。


6. 实用示例

① 基本输出

bash

复制代码
printf "Hello, %s!\n" "World"

输出:Hello, World!

② 格式化字符串(表格对齐)

bash

复制代码
printf "%-10s %-8s %-4s\n" "姓名" "性别" "体重(kg)"
复制代码
printf "%-10s %-8s %-4.2f\n" "杨过" "男" 68.6543

输出:

姓名 性别 体重(kg)
杨过 68.65

%-10s 表示宽度至少 10 且左对齐,%-4.2f 表示总宽至少 4、小数部分取 2 位。

相关推荐
闫记康5 小时前
Linux学习day4
linux·运维·学习
xG8XPvV5d6 小时前
GitHub Actions自动化部署全攻略
运维·自动化·github
申耀的科技观察6 小时前
【观察】戴尔科技:以“解耦化+自动化”重塑私有云,定义“云智能”进化新范式
运维·科技·自动化
sdm0704276 小时前
应用层自定义协议
运维·服务器·网络
Agent产品评测局6 小时前
标准化产品vs定制开发,制造业自动化方案选型横评:2026工业智能体落地深度指南
运维·人工智能·ai·chatgpt·自动化
bush46 小时前
linux开发板连接virtualbox虚拟机ubuntu的usb网卡,访问外网方法。
linux·运维·ubuntu
VOOHU-沃虎6 小时前
VOOHU——防水RJ45连接器在户外网络设备中的应用与选型
运维·服务器·网络
晴天¥6 小时前
达梦数据库的内存结构
服务器·数据库·达梦数据库
小明同学016 小时前
C++后端项目:统一大模型接入 SDK(一)
linux·c++·chatgpt