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}'
-------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/424213.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# System.BadImageFormatException问题及解决

C# System.BadImageFormatException问题 出现System.BadImageFormatException 异常有两种情况&#xff1a;程序目标平台不一致&引用dll文件的系统平台不一致。 异常参考 BadImageFormatException 程序目标平台不一致&#xff1a; 项目>属性>生成&#xff1a;x86 …

【吊打面试官系列-Redis面试题】使用过 Redis 做异步队列么,你是怎么用的?

大家好&#xff0c;我是锋哥。今天分享关于【使用过 Redis 做异步队列么&#xff0c;你是怎么用的&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 使用过 Redis 做异步队列么&#xff0c;你是怎么用的&#xff1f; 一般使用 list 结构作为队列&#xff0c;rpus…

【Redis】redis5种数据类型(list)

目录 基本介绍 命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LLEN LREM LTRIM LSET 阻塞版本的命令 BLPOP 内部编码 基本介绍 list相当于c的双端队列deque 区分获取和删除的区别 lindex能获取到元素的值lrem也能返回被删除元素的值 命…

828华为云征文 | 华为云FlexusX实例下的Kafka集群部署实践与性能优化

前言 华为云FlexusX实例&#xff0c;以创新的柔性算力技术&#xff0c;为Kafka集群部署带来前所未有的性能飞跃。其灵活的CPU与内存配比&#xff0c;结合智能调度与加速技术&#xff0c;让Kafka在高并发场景下依然游刃有余。在828华为云企业上云节期间&#xff0c;FlexusX实例携…

手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决

展讯ResearchDownload工具 展讯芯片的刷机工具--ResearchDownload下载工具"是一款专为用户设计的高效、便捷的下载管理软件&#xff0c;它能够帮助用户快速、稳定地从互联网上获取各种文件。这款工具以其强大的功能和良好的用户体验&#xff0c;在众多展讯芯片下载工具中脱…

git-describe获取不到新创建的标签

一、问题描述 1、新建的分支 2、git-describe 失败 二、查询资料 &#xff08;1&#xff09;git-describe - 根据可用的ref给对象一个人类可读的名称 &#xff08;2&#xff09;该命令查找可从提交访问的最新标记。如果标记指向提交&#xff0c;则仅显示标记。否则&#xf…

S-Procedure的基本形式及使用

理论 Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- \textbf{Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- } Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- tions w.r.t. x ∈ C M 1 \mathbf{x}\in\mathbb{C}^M\times1 x…

el-input设置type=‘number‘和v-model.number的区别

el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据&#xff0c;我们首先会想到typenumber&#xff0c;设置完type为number时会限制我们输入的内容只能为数字&#xff0c;不能为字符/汉字等非数字类型的数值&…

Leetcode面试经典150题-148.排序链表

题目比较简单&#xff0c;使用链表的归并排序 解法都在代码里&#xff0c;不懂就留言或者私信 合并链表部分没怎么加注释&#xff0c;时间实在是不充裕&#xff0c;看不懂的看一下这篇专门讲解合并链表的 Leetcode面试经典150题-21.合并两个有序链表-CSDN博客 /*** Definit…

Brave编译指南2024 Windows篇:安装Visual Studio 2022(二)

1.引言 在编译Brave浏览器之前&#xff0c;安装和配置合适的开发工具是至关重要的一步。Visual Studio 2022是编译Brave浏览器所需的重要开发环境&#xff0c;它提供了一整套工具和服务&#xff0c;以支持多种编程语言和技术。作为一款功能强大的集成开发环境&#xff08;IDE&…

【vue-media-upload】一个好用的上传图片的组件,注意事项

一、问题 media 的saved 数组中的图片使用的是location 相对路径&#xff0c;但是我的业务需要直接根据图片链接展示图片&#xff0c;而且用的也不是location 相关源代码 <div v-for"(image, index) in savedMedia" :key"index" class"mu-image-…

测试ASP.NET Core的WebApi项目调用WebService

虚拟机中部署的匿名访问的WebService&#xff0c;支持简单的加减乘除操作。本文记录在WebApi中调用该WebService的方式。   VS2022创建WebApi项目&#xff0c;然后在解决方案资源管理器的Connected Services节点点右键&#xff0c;选择管理连接的服务菜单。 点击下图圈红处…

Anolis OS 8.8 CentOS8离线安装mysql-8.0.9

下载mysql安装包&#xff1a; mysql下载地址 在Linux系统中&#xff0c;mysql的安装包除了要区分系统和cpu架构之外&#xff0c;还区分安装方式&#xff0c;下载不同的包&#xff0c;安装方式也完全不一样&#xff0c;安装完成后的效果也完全不一样。 我之前下载的包按照官方…

QT Layout布局,隐藏其中的某些部件后,不影响原来的布局

最近在工作时&#xff0c;被要求&#xff0c;需要将布局中的某些部件隐藏后&#xff0c;但不能影响原来的布局。 现在记录解决方案&#xff01; 一、水平布局&#xff08;垂直布局一样&#xff09; ui中的布局 效果&#xff1a; 按钮可以任意隐藏&#xff0c;都不影响其中布…

CCS811二氧化碳传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ccs811.h文件 ccs811.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 CCS811模块是一种气体传感器&#xff0c;可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2…

Redis学习——数据不一致怎么办?更新缓存失败了又怎么办?

文章目录 引言正文读写缓存的数据一致性只读缓存的数据一致性删除和修改数据不一致问题操作执行失败导致数据不一致解决办法 多线程访问导致数据不一致问题总结 总结参考信息 引言 最近面试快手的时候被问到了缓存不一致怎么解决&#xff1f;一开始还是很懵的&#xff0c;因为…

关于java同步调用多个接口并返回数据

在现代软件开发中&#xff0c;应用程序经常需要与多个远程API接口进行交互以获取数据。Java作为一种流行的编程语言&#xff0c;提供了多种方式来实现这一需求。本文将探讨如何在Java中同步调用多个API接口&#xff0c;并有效地处理和返回数据。 同步调用的必要性 在某些场景下…

音视频推流中使用wireshark进行抓包分析RTMP

一、前期工作 最近使用开发板采集音视频数据合成FLV流后进行推流到PC端&#xff08;RTMP协议&#xff09;&#xff0c;PC端需要安装对应的nginx以及支持rtmp的nginx&#xff0c;在网上找了教程后安装成功&#xff0c;现在使用wireshark工具对开发板于pc端之间的通信协议进行解析…

【安全系列--处理挖矿】

现象&#xff1a;我们云上waf提示有台服务器存在挖矿行为 解决思路&#xff1a; 1、查看服务器的进程情况 top发现服务的CPU使用率非常高 2、使用性能分析工具perf查看占用的cpu进程 sudo apt install linux-tools-common发现一些kernel进程存在异常 3、使用find查一下这…

Java多线程——模拟接力赛跑

题目&#xff1a; 多人参加1000米接力跑 每人跑100米&#xff0c;换下个选手 每跑10米显示信息 解题思路&#xff1a; 1.必须要用到多线程的锁&#xff0c;否则就会出现三个选手乱跑的情况&#xff0c;我们需要一个一个跑 2.使用给oneRunner上锁的方式更细的控制资源比直接给…