当前位置: 首页 > news >正文

Linux echo,printf 命令

参考资料

  1. 【Linux】ハイフンをいっぱい出したかっただけなのに【printfコマンド】

目录

  • 一. echo命令
    • 1.1 -n 选项
    • 1.2 -e 选项
    • 1.3 配合扩展实现批量换行输出
    • 1.3.1 `xargs -n 1`
    • 1.3.2 `tr ' ' '\n'`
    • 1.3.3 `xargs printf "%s\n"`
    • 1.4 ANSI转义序列
    • 1.5 彩色文本输出
  • 二. printf 命令
    • 2.1 基本语法
    • 2.2 %s 格式化字符串
    • 2.3 %d 格式化整数
    • 2.4 %f 格式化小数
    • 2.5 生成指定数量的横线


一. echo命令

1.1 -n 选项

⏹echo命令默认情况下会输出换行符,通过-n选项可以不输出结尾的换行符。

fengyehong@ubuntu:~$ echo "HELLO WORLD"
HELLO WORLD
fengyehong@ubuntu:~$
# 使用了 -n 选项,因此换行符消失
fengyehong@ubuntu:~$ echo -n "HELLO WORLD"
HELLO WORLDfengyehong@ubuntu:~$

1.2 -e 选项

⏹启用解释反斜杠转义字符(如 \n 换行、\t 制表符等)。

# 未使用 -n 之前,只会原样输出
fengyehong@ubuntu:~$ echo "HELLO\nWORLD!"
HELLO\nWORLD!
fengyehong@ubuntu:~$
fengyehong@ubuntu:~$ echo -e "HELLO\nWORLD!"
HELLO
WORLD!

1.3 配合扩展实现批量换行输出

1.3.1 xargs -n 1

fengyehong@ubuntu:~$ echo file_{01..03}.{mp{3..4},mp{a,b,p,v}} | xargs -n 1
file_01.mp3
file_01.mp4
file_01.mpa
file_01.mpb
file_01.mpp
file_01.mpv
file_02.mp3
file_02.mp4
file_02.mpa
file_02.mpb
file_02.mpp
file_02.mpv
file_03.mp3
file_03.mp4
file_03.mpa
file_03.mpb
file_03.mpp
file_03.mpv

1.3.2 tr ' ' '\n'

fengyehong@ubuntu:~$ echo file_{01..03}.{mp{3..4},mp{a,b,p,v}} | tr ' ' '\n'
file_01.mp3
file_01.mp4
file_01.mpa
file_01.mpb
file_01.mpp
file_01.mpv
file_02.mp3
file_02.mp4
file_02.mpa
file_02.mpb
file_02.mpp
file_02.mpv
file_03.mp3
file_03.mp4
file_03.mpa
file_03.mpb
file_03.mpp
file_03.mpv

1.3.3 xargs printf "%s\n"

fengyehong@ubuntu:~$ echo file_{01..03}.{mp{3..4},mp{a,b,p,v}} | xargs printf "%s\n"
file_01.mp3
file_01.mp4
file_01.mpa
file_01.mpb
file_01.mpp
file_01.mpv
file_02.mp3
file_02.mp4
file_02.mpa
file_02.mpb
file_02.mpp
file_02.mpv
file_03.mp3
file_03.mp4
file_03.mpa
file_03.mpb
file_03.mpp
file_03.mpv

1.4 ANSI转义序列

⏹echo可以通过-e选项,配合ANSI转义序列来实现彩色文本的输出。

  • ANSI 转义序列的格式
    • \e\033:表示转义序列的开始。
    • [: 紧跟在 \e 后,表示开始颜色代码。
    • 0m:表示重置样式,恢复到默认颜色。
\033[<样式>;<前景色>;<背景色>m<文本>\033[0m
\e[<样式>;<前景色>;<背景色>m<文本>\e[0m

⏹常用颜色代码

  • 前景色(文本颜色)
    • 30:黑色
    • 31:红色
    • 32:绿色
    • 33:黄色
    • 34:蓝色
    • 35:紫色
    • 36:青色
    • 37:白色
  • 背景色
    • 40:黑色
    • 41:红色
    • 42:绿色
    • 43:黄色
    • 44:蓝色
    • 45:紫色
    • 46:青色
    • 47:白色
  • 文本样式
    • 0:重置/普通文本
    • 1:加粗
    • 4:下划线

1.5 彩色文本输出

⏹配合ANSI转义序列,实现文本彩色输出

使用 ANSI 转义码时,记得在希望重置颜色或样式的地方加上

  • \033[0m
  • 或者
  • \e

这将恢复终端的默认显示方式。

echo -e "\e[31m我是红色文本\e[0m"echo -e "\e[1;32m绿色加粗字体\e[0m"echo -e "\e[4;33m黄色文本带下划线\e[0m"echo -e "\e[37;44m白色文本,蓝色背景\e[0m"echo -e "\e[31m红色文字\e[0m \e[32m绿色文字\e[0m \e[34m蓝色文字\e[0m"

⏹效果如下

在这里插入图片描述


二. printf 命令

2.1 基本语法

  • ⏹选项
    • %s:字符串
    • %d:整数
    • \n:换行符
    • \t:制表符
  • ⏹注意事项
    • printf 不会自动换行,必须显式添加 \n
    • printf 也可以结合 ANSI 转义序列实现彩色输出。
printf FORMAT [ARGUMENT]...

2.2 %s 格式化字符串

⏹printf 输出默认不会添加换行符,需要手动添加\n换行符

fengyehong@ubuntu:~$ printf "%s\n" .{mp{3..4},mp{a,b,p,v}}
.mp3
.mp4
.mpa
.mpb
.mpp
.mpv

2.3 %d 格式化整数

  • seq 1 10:生成1到10的数字
  • %03d:整数格式化为3位
fengyehong@ubuntu:~$ seq 1 10 | xargs printf "value: %03d\n"
value: 001
value: 002
value: 003
value: 004
value: 005
value: 006
value: 007
value: 008
value: 009
value: 010

2.4 %f 格式化小数

  • shuf -i 10-99 -n 3:随机从 10 到 99 的整数范围内生成 3 个数。
  • awk '{printf "%.1f\n", $1/10}':将生成的整数除以 10,并保留 1 位小数。
# 将随机生成的3个小数放入nums变量中
fengyehong@ubuntu:~$ nums=$(shuf -i 10-99 -n 3 | awk '{printf "%.1f\n", $1/10}')
# 查看变量内容
fengyehong@ubuntu:~$ echo $nums
6.0 3.3 5.1

⏹小数格式化

fengyehong@ubuntu:~$ echo $nums | xargs printf "%.2f\n"
6.00
3.30
5.10

2.5 生成指定数量的横线

⏹先生成与数量相匹配的带横线的数字

fengyehong@ubuntu:~$ printf "%s-" {0..30} | xargs printf "%s\n"
0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-

⏹然后通过tr命令删除所有的数字之后,再通过awk命令打印之后,就可以得到我们想要的指定数量的横线了。

fengyehong@ubuntu:~$ printf "%s-" {0..30} | tr -d '[0-9]' | awk '{print}'
-------------------------------

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 工业一体机选型如何考虑硬件和软件兼容性
  • Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题
  • web群集--nginx配置文件location匹配符的优先级顺序详解及验证
  • 防蓝光护眼灯有用吗?五款防蓝光效果好的护眼台灯推荐
  • 《JavaEE进阶》----11.<SpringIOCDI【Spring容器+IOC详解+DI介绍】>
  • ArcGIS Pro SDK (十三)地图创作 4 设备
  • 基于鸿蒙API10的RTSP播放器(八:音量和亮度调节功能的整合)
  • LeetCode --- 414周赛
  • 深入理解Linux中的多路复用技术:select、poll与epoll
  • 玄机靶场初体验
  • 目标检测-小目标检测方法
  • 《ORANGE‘s 一个操作系统的实现》-- ubuntu14.04下bochs2.3.5的配置与使用
  • 【第34章】Spring Cloud之SkyWalking分布式日志
  • JVM四种垃圾回收算法以及G1垃圾回收器(面试)
  • 今日leetCode 242.有效的字母异位词
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • maven工程打包jar以及java jar命令的classpath使用
  • tab.js分享及浏览器兼容性问题汇总
  • 百度地图API标注+时间轴组件
  • 从tcpdump抓包看TCP/IP协议
  • 分布式熔断降级平台aegis
  • 简单易用的leetcode开发测试工具(npm)
  • 两列自适应布局方案整理
  • 说说动画卡顿的解决方案
  • 思否第一天
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 写给高年级小学生看的《Bash 指南》
  • 7行Python代码的人脸识别
  • 阿里云ACE认证之理解CDN技术
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # 达梦数据库知识点
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ### RabbitMQ五种工作模式:
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (6)STL算法之转换
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (四)stm32之通信协议
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net 验证控件和javaScript的冲突问题
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net专家(张羿专栏)
  • .pop ----remove 删除
  • /bin、/sbin、/usr/bin、/usr/sbin
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @ModelAttribute 注解
  • @ModelAttribute使用详解
  • [ solr入门 ] - 利用solrJ进行检索
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [C++][数据结构][跳表]详细讲解
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb