Linux echo,printf 命令

news2024/12/23 23:36:34

参考资料

  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.coloradmin.cn/o/2136130.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos7安装gitlab-ce(rpm安装方式)

本章教程&#xff0c;主要介绍如何在Centos7安装gitlab-ce。 一、安装基础环境 安装gitlab-ce之前&#xff0c;我们需要安装一下jdk版本。 sudo yum install java-11-openjdk-devel二、下载安装包 这里我们下载的是rpm包。更多gitlab-ce版本可以在这里查看&#xff1a;https://…

果蔬识别系统架构+流程图

相关文章和代码 果蔬识别系统 果蔬识别系统优化&#xff08;1~5&#xff09; 架构图 流程图 初始化 识别流程 学习流程 同步流程 与初始化类似&#xff0c;只是同步只同步一个storeCode数据 删除数据流程 导入数据

无人机几种常见的避障系统!!!

1. 视觉避障系统 工作原理&#xff1a; 视觉避障系统通过安装在无人机上的摄像头捕捉周围环境的图像&#xff0c;利用计算机视觉技术对图像进行处理和分析&#xff0c;提取出障碍物的信息。 通过对障碍物的识别和分类&#xff0c;无人机可以判断出障碍物的性质和危险程度&am…

AI 时代程序员的挑战与机遇

你好&#xff0c;我是看山。 在当今数字化快速发展的时代&#xff0c;AIGC&#xff08;如 ChatGPT、Midjourney、Claude 等&#xff09;大语言模型如雨后春笋般接二连三的涌现&#xff0c;与此同时&#xff0c;AI 辅助编程工具也日益普及。 这一系列的变化使得程序员的工作方…

pdf文件怎么转换成ppt?介绍几种pdf转ppt的方法

pdf文件怎么转换成ppt&#xff1f;将pdf文件转换成ppt格式是一种常见且实用的需求&#xff0c;特别是在制作演示文稿和准备报告时。pdf格式因其文件内容的固定排版和高兼容性而广泛应用于文档的保存和分享。然而&#xff0c;在某些情况下&#xff0c;将pdf文件转换为ppt格式可以…

拒绝千篇一律,AI帮你定制独一无二的个人写真

每个女人都渴望展现最美的自己&#xff0c;你是否厌倦了拍出千篇一律的照片&#xff1f;今天&#xff0c;我要告诉你一个秘密&#xff0c;用简单三步&#xff0c;即可打造属于你的独一无二个人写真&#xff01;文生图、蒙版换脸、图生图&#xff0c;三步化身超级模特&#xff0…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇4 | XXE漏洞审计

文章目录 Java代码审计篇 | ofcms系统审计思路讲解 - 篇4 | XXE漏洞审计0. 前言1. XXE代码审计【有1处】1.1. 搜索JRXmlLoader1.1.1. JRAntApiWriteTask1.1.2. JRAntUpdateTask1.1.3. TableReportContextXmlRule1.1.4. JasperCompileManager【存在漏洞】 1.2. 搜索XMLReader1.2…

C++初阶:类和对象(上)

&#x1f680;前言&#xff1a; 本文主要讲述了&#xff0c;面向过程和面向对象&#xff0c;并引入类&#xff0c;然后就以类为基础并讲解。 目录 &#x1f349;1.面向过程和面向对象的初步认识&#xff1a; &#x1f952;2.类的引入&#xff1a; &#x1f351;3.类的定义…

dd 命令:复制和转换文件

一、dd 命令简介 ​dd​ 命令是一个在 Unix 和类 Unix 系统中用于复制文件和转换文件的命令行工具。它的功能非常强大&#xff0c;可以用于各种目的&#xff0c;例如创建镜像文件、备份和恢复数据、复制数据等。 ​dd​ 是一个用于读取、转换和写入数据的工具&#xff0c;通常…

Metasploit 渗透测试之Metasploit快速入门

简介 Metasploit 是目前世界上领先的渗透测试工具&#xff0c;也是信息安全与渗透测试领域最大的开源项目之一。它彻底改变了我们执行安全测试的方式。Metasploit之所以流行&#xff0c;是因为它可以执行广泛的安全测试任务&#xff0c;从而简化渗透测试的工作。Metasploit 适…

海外云手机怎么实现TikTok多账号防关联?

TikTok多账号运营&#xff0c;作为众多用户选择的引流策略&#xff0c;旨在通过多账号的协同作用&#xff0c;更快速、高效地推动主账号的流量增长。然而&#xff0c;这一策略面临着一个关键难题——TikTok账号防关联。本文将简要介绍海外云手机如何解决这一问题。 在TikTok多账…

解题 - 模拟实现 atoi

文章目录 前言 一、atoi 函数是什么&#xff1f; 二、模拟实现 atoi 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索&#xff1b; 一、atoi 函数是什么&#xff1f; atoiint atoi(const char* str);所要引用的头文件: <stdlib.h>原理&#xff1a;将字符串转换…

计算几何学习

凸包 凸组合&#xff0c; λ < λ 1 , λ 1 , . . . , λ n > T \lambda <\lambda_1,\lambda_1,...,\lambda_n>^T λ<λ1​,λ1​,...,λn​>T 其中 λ 1 λ 2 . . . λ n 1 \lambda_1\lambda_2...\lambda_n 1 λ1​λ2​...λn​1,且 λ i ≥ 0 \l…

深度解析 MintRich 独特的价格曲线机制玩法

随着 Meme 币赛道的迅速崛起&#xff0c;NFT 市场也迎来了新的变革。作为一个创新的 NFT 发行平台&#xff0c;Mint.Rich 正掀起一场全民参与的 NFT 热潮。其简易的操作界面和独特的价格曲线设计&#xff0c;让任何人都能以极低的门槛发行和交易自己的 NFT&#xff0c;从而参与…

多线程实现数据处理与打印分离

注意&#xff0c;结构体传入数据 一开始int* 不能变成void 传入int ** 也会失效&#xff0c; 只能一开始在message 结构体里有 int* 类型才能运行 这是通过打印表格得到的 使用raylib 开发 #include <raylib.h> #include <stdio.h> #include <math.h> #…

【零成本】七日杀 服务器搭建 异地联机 无需公网IP、服务器

主要内容 什么是七日杀 搭建前需要准备什么 详细步骤 1.Steam中下载七日杀服务器工具 2.修改七日杀服务配置文件 3.启动七日杀服务器应用 4.运行 MoleSDN 进行异地联机 5.小伙伴打开游戏加入 鼠鼠的服务器 什么是七日杀 《七日杀》是一款沙盒生存恐怖游戏&#xff0c;…

Linux shell编程学习笔记80:gzip命令——让文件瘦身

0 引言 在 Linux shell编程学习笔记76&#xff1a;tar命令——快照 & 备份&#xff08;上&#xff09;-CSDN博客 Linux shell编程学习笔记77&#xff1a;tar命令——快照 & 备份&#xff08;下&#xff09;_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…

ai绘画文生图怎么制作?2024教你快速进行ai绘画

ai绘画文生图怎么制作&#xff1f;2024教你快速进行ai绘画 AI绘画技术的迅速发展&#xff0c;使得用户只需输入文本描述&#xff0c;就能生成符合要求的图像&#xff0c;这种“文生图”&#xff08;Text-to-Image&#xff09;功能使得绘画和创作变得简单、高效。以下是5款帮助…

Git提交有乱码

服务器提交记录如图 可知application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 打开settings - Editor - File Encodings 因为我们项目的其他文件都是UTF-8&#xff0c;所以&#xff0c;我们将默认值都改成UTF-8 然后…

【原创】java+springboot+mysql鲜花商城(花店)系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…