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 位。

相关推荐
鼎讯信通7 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..7 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
跨境数据猎手8 小时前
大数据在电商行业的应用
大数据·运维·爬虫
linyanRPA9 小时前
影刀RPA店群自动化实战:多店铺活动自动报名与促销管理架构设计
运维·自动化·办公自动化·rpa·python脚本·爬虫自动化·店群自动化
mounter6259 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
会Tk矩阵群控的小木9 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
赵渝强老师9 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
佛山个人技术开发10 小时前
GitCode SSH连接配置教程
运维·ssh·gitcode
Qt程序员10 小时前
Linux RCU 原理与应用
linux·c++·内核·linux内核·rcu
The Sheep 202310 小时前
Vue复习
linux·服务器·数据库