Linux echo,printf 命令

news/2024/9/18 10:26:06/ 标签: linux

参考资料

  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.ppmy.cn/news/1525870.html

相关文章

敏捷开发方法例题

答案&#xff1a;B 敏捷方法 特点 极限编程XP 4大价值观&#xff0c;5大原则&#xff0c;12个最佳实践 水晶法 认为每一个不同的项目都需要一套不同的策略&#xff0c;约定和方法论&#xff0c;认为人对软件质量有重要影响&#xff0c;因此随着项目质量和开发人员须知的提…

速盾:你知道高防 IP 和高防 CDN 的区别吗?

在当今网络安全形势日益严峻的情况下&#xff0c;网站的安全防护成为了企业和个人关注的焦点。高防 IP 和高防 CDN 作为两种常见的网络安全防护手段&#xff0c;被广泛应用于网站的安全防护中。那么&#xff0c;高防 IP 和高防 CDN 有什么区别呢&#xff1f;防护网站哪个更好呢…

ip地址为什么要轮换

在网络世界中&#xff0c;IP地址是设备与互联网通信的身份证。然而&#xff0c;单一的IP地址可能会因为各种原因而需要轮换。IP轮换是指在一定时间内更换正在使用的IP地址&#xff0c;这一策略在多种网络应用中发挥着重要作用。本文将探讨IP地址轮换的原因、其带来的优势以及实…

一口气学完docker【入门到精通】

一、容器 1、什么是容器 容器是一种轻量级的虚拟化技术&#xff0c;它为应用程序提供了一种隔离的运行环境。在操作系统级别上实现&#xff0c;容器将应用程序及其所有依赖项&#xff08;包括库、配置文件等&#xff09;封装在一起&#xff0c;形成一个独立的标准单元。 每个…

vscode配置django环境并创建django项目

1、创建文件夹 创建文件夹 并在vscode打开 终端输入命令 “ python -m venv env ” 查看目录结构 2、创建项目 在终端输入 django-admin startproject 文件名(这里以myshop为例) 3、创建应用 在myshop打开终端 在终端输入 django-admin startapp 应用名 这里以app1为例…

【论文笔记】AutoLFADS (Nature Methods, 2022)

相关链接&#xff1a; Is This Tutorial For You? - AutoLFADS TutorialDANDI ArchiveNonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology Abstract 通过深度神经群体动力学模型实现最先进的性能需要对每个数据集进行广泛的超参数调整。 Au…

Rust 数据类型

文章目录 发现宝藏1. 标量类型1.1 整型1.2 浮点型1.3 布尔型1.4 字符型 2. 复合类型2.1 元组2.2 数组 3. 总结 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 Rust 是一种静态…

AI大模型与产品经理:替代与合作的深度剖析

在创业的征途中&#xff0c;产品经理常常被外界以一种半开玩笑的口吻提及&#xff1a;“就差一个程序员了。”这句话背后&#xff0c;既蕴含着对产品经理创意与策略能力的认可&#xff0c;也揭示了技术实现环节对于产品成功不可或缺的重要性。然而&#xff0c;随着AI技术的飞速…

【C++题解】1406. 石头剪刀布?

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1406. 石头剪刀布&#xff1f; 类型&#xff1a;二维数组 题目描述&#xff1a; 石头剪刀布是常见的猜拳游戏。石头胜剪刀&#xff0c;剪刀胜布&#xff0c;布胜石头。如果两个人出…

Facebook的虚拟现实计划:未来社交的全新视角

随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;正逐步成为我们日常生活的一部分。作为全球领先的社交平台&#xff0c;Facebook正在大力投入虚拟现实技术&#xff0c;以重新定义社交互动的方式。本文将深入探讨Facebook的虚拟现实计划&#xff0c;分析其如…

用Python-pptx定制你的形状效果

哈喽,大家好,我是木头左! 本篇文章将深入探讨如何使用Python-pptx来形状属性,包括颜色、边框和效果,让你的PPT设计更上一层楼。 准备工作:安装和导入python-pptx 首先确保你已经安装了python-pptx库。如果没有,可以通过pip安装: pip install python-pptx安装完成后,…

[数据集][目标检测]河道垃圾检测数据集VOC+YOLO格式2274张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2274 标注数量(xml文件个数)&#xff1a;2274 标注数量(txt文件个数)&#xff1a;2274 标注…

Python编码系列—Python抽象工厂模式:构建复杂对象家族的蓝图

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

汽车EDI:montaplast EDI对接

Montaplast 是一家总部位于德国的全球知名汽车零部件供应商&#xff0c;专注于高精度塑料部件的设计、开发和生产。公司成立于1958年&#xff0c;主要为汽车行业提供轻量化、高性能的塑料解决方案。Montaplast 以其在注塑成型技术、表面处理和装配技术方面的专业能力而著称&…

Java在零工市场中的应用:构建灵活高效的劳动力平台

随着数字经济的迅猛发展&#xff0c;零工经济作为一种新兴的劳动力市场模式&#xff0c;正在全球范围内迅速崛起。零工市场通过互联网平台将服务提供者与需求者进行快速匹配&#xff0c;使得个人可以临时、自由地提供服务&#xff0c;企业则能够按需雇佣劳动力&#xff0c;实现…

【VUE】11、安装nvm管理多个版本的node.js

1、简介 nvm 全称为 Node Version Manager&#xff0c;即 Node.js 版本管理器。它是一个用于在同一台机器上管理多个 Node.js 版本的工具。通过 nvm&#xff0c;用户可以轻松地安装、切换、卸载不同版本的 Node.js&#xff0c;而无需担心版本冲突或环境变量配置问题。这使得开…

大模型的实践应用29-大语言模型的RLHF(人类反馈强化学习)的具体应用与原理介绍

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用29-大语言模型的RLHF(人类反馈强化学习)的具体应用与原理介绍。在当今人工智能发展的浪潮中,大语言模型(Large Language Models, LLMs)凭借其强大的语言理解和生成能力,成为了研究与应用的热点。而在这股浪潮中,一…

tcp、http和rpc

tcp是传输层协议&#xff0c;http和rpc是应用层协议。http和rpc的底层都是tcp。tcp三大特点&#xff1a;面向连接、可靠、基于字节流。纯tcp发送的消息是基于字节流&#xff0c;无边界的&#xff0c;接收方不知道哪些字节是一条完整的消息。所以&#xff0c;tcp不能直接使用。可…

Kubernetes (k8s)v1.27.1版本安装步骤

这 一、k8s 安装步骤1.1 安装docker及containerd容器1.2、设置每台服务器的参数1.3、安装kubelet、kubeadm、kubectl1.4、修改 kubelet 的 cgroup 和 docker 的 cgroup-driver 保持一致1.5、使用containerd 默认容器的配置1.6、使用kubeadm进行初始化1.7、初始化成功1.8、集群部…

【JavaSE】Java基本数据类型缓存池

new Integer(18) 、 Integer.valueOf(18) 、Integer.valueOf(300) 的区别 new Integer(18) &#xff1a;每次都会创建一个新对象Integer.valueOf(x)&#xff1a; x in [-128, 127]&#xff1a;使用缓存池中的对象x not in [-128, 127]&#xff1a;创建新对象 Integer缓存池大…