每天一个Linux命令_printf

printf 🆚 echo

对比维度 printf 命令 echo 命令
核心功能 格式化输出(类C语言printf),侧重"精准排版" 简单输出字符串/变量,侧重"快速打印"
默认换行 不自动换行(需手动加\n) 自动在输出末尾加换行符(\n)
转义字符支持 原生支持\n(换行)、\t(制表符)等转义符 默认不解析转义符,需加-e参数才支持(如echo -e "a\tb")
格式化输出 支持%s(字符串)、%d(数字)等格式化符 无格式化功能,仅能拼接字符串/变量
返回值 几乎始终返回0(仅极端错误时非0) 正常输出返回0,参数错误/输出失败返回非0
典型用法示例 printf "姓名:%s,年龄:%d\n" "小明" 10 echo "Hello World" / echo -e "a\nb"
适用场景 需固定格式输出(如报表、对齐文本)、循环输出 快速打印简单文本/变量、脚本中临时输出提示信息

使用ANSI和SGR修饰命令样式(与echo相同)

  • ANSI转译序列(American national standards Institute)
  • SGR转译序列(Select Graphic Rendition)
  • printf "\e[5;31m$name\n\e[0m"

|-------------------------------|-----------|----------------|
| 代码类型 | 代码 | 效果说明 |
| 基 础 格 式 | \e[0m | 重置所有格式(默认) |
| 基 础 格 式 | \e[1m | 加粗/高亮显示 |
| 基 础 格 式 | \e[2m | 弱化显示(暗色) |
| 基 础 格 式 | \e[3m | 斜体 |
| 基 础 格 式 | \e[4m | ++下划线++ |
| 基 础 格 式 | \e[5m | 闪烁显示 |
| 基 础 格 式 | \e[7m | 反转显示(前景/背景色互换) |
| 基 础 格 式 | \e[8m | 隐藏显示 |
| 高 亮 前 景 色 | \e[90m | 深灰色 |
| 高 亮 前 景 色 | \e[91m | 亮红色 |
| 高 亮 前 景 色 | \e[92m | 亮绿色 |
| 高 亮 前 景 色 | \e[93m | 亮黄色 |
| 高 亮 前 景 色 | \e[94m | 亮蓝色 |
| 高 亮 前 景 色 | \e[95m | 亮紫色 |
| 高 亮 前 景 色 | \e[96m | 亮青色 |
| 高 亮 前 景 色 | \e[97m | 亮白色 |
| 高 亮 背 景 色 | \e[100m | 深灰色背景 |
| 高 亮 背 景 色 | \e[101m | 亮红色背景 |
| 高 亮 背 景 色 | \e[102m | 亮绿色背景 |
| 高 亮 背 景 色 | \e[103m | 亮黄色背景 |
| 高 亮 背 景 色 | \e[104m | 亮蓝色背景 |
| 高 亮 背 景 色 | \e[105m | 亮紫色背景 |
| 高 亮 背 景 色 | \e[106m | 亮青色背景 |
| 高 亮 背 景 色 | \e[107m | 亮白色背景 |

有**-** 代表左对齐 无代表右对齐

  • printf "%-3s %2d %2d %2d" "xm" "11" "12" "13" && printf "%-3s %2d %2d %2d\n" "xmm" "22" "23" "24" (两个命令要用&&连接)
复制代码
# 通用模板:1个字符串 + N个整数,多行对齐输出
printf "%-[字符串宽度]s %[整数宽度]d %[整数宽度]d ...\n" "字符串1" 整数1 整数2 ... &&
printf "%-[字符串宽度]s %[整数宽度]d %[整数宽度]d ...\n" "字符串2" 整数1 整数2 ...

格式说明:

组成部分 可选值/说明 是否必选 示例
% 占位符起始标识 必选 -
对齐符 -:左对齐;无:右对齐 可选 -(左对齐)
宽度 数字:输出内容的固定宽度 可选 3(宽度3)
精度 .数字:仅对浮点数生效 可选 .2(保留2位小数)
类型符 匹配参数类型 必选 s(字符串)、d(整数)
相关推荐
硅基手札9 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
沫璃染墨10 小时前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
工作10年+,存储芯片行业11 小时前
Linux NVMe 中断排查与性能优化:CPU 亲和性
linux·运维·服务器·windows·性能优化·ssd·pcie
wuminyu11 小时前
ForkJoinPool内部WorkQueue的Lock-Free数组操作以及并发任务窃取原理剖析
java·linux·c语言·jvm·c++
快乐の番薯11 小时前
卷王问卷考试系统自动化功能测试
运维·功能测试·自动化
她说彩礼65万11 小时前
C语言 堆区和栈区
java·linux·c语言
一号弯12 小时前
装完LINUX,请先新建日常用户
linux·运维·服务器
驭渊的小故事12 小时前
linux 基础命令 + git 仓库创建和配置命令
linux·git
ShineWinsu12 小时前
对于Redis:主从复制的解析
linux·数据库·c++·redis·缓存·面试·主从复制
Lsetea12 小时前
OpenSSL verify报unable to get issuer certificate:error 2与partial_chain排查
linux·https·ssl证书·openssl·证书链