Linux echo命令(在终端输出文本)

文章目录

  • Linux Echo命令深度解析
    • 简介
    • 命令语法
    • 常见选项
      • - `-n`:不输出行尾的换行符,这意味着输出后不会换到下一行。
      • - `-e`:启用反斜杠转义的解释,允许使用特殊字符。
      • - `-E`:禁用反斜杠转义的解释(默认选项)。
    • 特殊字符支持(`-e`)
      • - `\n`:新行
      • - `\t`:水平制表符
      • - `\b`:退格(左移光标位置)(行为有点诡异)
      • - `\r`:回车(将光标移动到行的开头)
      • - `\\`:反斜杠
      • - `\0NNN`:以八进制数NNN表示的字符
    • 使用示例
      • 基本输出
      • 使用特殊字符
      • 避免换行
      • 复合输出
    • 在脚本中的应用
    • 结论

Linux Echo命令深度解析

简介

echo是Linux和Unix系统中常用的一个命令行工具,主要用于在终端输出文本。该命令非常简单,但是它在脚本编程和日常系统管理中扮演着重要的角色。

命令语法

echo命令的基本语法如下:

echo [选项] [字符串]

常见选项

echo命令提供了几个选项来控制其行为,最常用的选项包括:

- -n:不输出行尾的换行符,这意味着输出后不会换到下一行。

- -e:启用反斜杠转义的解释,允许使用特殊字符。

- -E:禁用反斜杠转义的解释(默认选项)。

特殊字符支持(-e

启用-e选项后,echo支持以下转义序列:

- \n:新行

在这里插入图片描述

- \t:水平制表符

在这里插入图片描述

- \b:退格(左移光标位置)(行为有点诡异)

正常用法:

在这里插入图片描述
在这里插入图片描述

其他:
在这里插入图片描述

在你的示例中,当你试图通过echo -e命令并使用退格字符\b删除字符时,"我"这个字没有被删除,因为在很多终端和字符编码中,中文字符被处理为宽字符,通常占用两个字节。而\b退格字符通常只会删除一个字节,所以在你尝试删除"我"这个字符时,它实际上只删除了这个宽字符的一半,导致没有完全删除。你可以使用两次退格字符来尝试删除一个中文字符,例如echo -e "我\b\b"。这样应该能删除整个字符。

两个\b还删不掉,要三个😂
在这里插入图片描述

-b的行为其实不是删除,而是左移光标位置:

在当前的终端环境中,\b退格符仅用于移动光标位置而不实际删除已经打印的字符。这是一些终端和shell环境的常见行为。

在很多终端中,退格符\b只会将光标向左移动一个位置,而不会擦除任何字符。

在这里插入图片描述

- \r:回车(将光标移动到行的开头)

在这里插入图片描述

- \\:反斜杠

在这里插入图片描述

- \0NNN:以八进制数NNN表示的字符

在这里插入图片描述

使用示例

基本输出

echo "Hello, World!"

输出:

Hello, World!

使用特殊字符

echo -e "第一行\n第二行"

输出:

第一行
第二行

避免换行

echo -n "Hello, World!"

此命令输出Hello, World!后不会换行。

在这里插入图片描述

复合输出

利用echo命令可以在脚本中用来显示变量,或者结合管道和重定向操作:

# 显示变量内容
user="linus"
echo "当前用户为:$user"
# 重定向到文件
echo "保存这段文本到文件" > file.txt
# 结合管道使用
echo "hello 全部转为大写" | tr 'a-z' 'A-Z'

输出:

当前用户为:linus

并且file.txt文件中会包含文本保存这段文本到文件

最后一个命令会输出全部转为大写

在这里插入图片描述

在脚本中的应用

echo命令在shell脚本中极为常见,用于提供运行状态的信息、错误消息、日志记录等。

#!/bin/bash# 检查文件是否存在
file_path="/path/to/file"
if [ -e "$file_path" ]; thenecho "$file_path 存在."
elseecho "$file_path 不存在."
fi

这个脚本检查一个文件是否存在,并输出相应的信息。

结论

尽管echo命令非常基础,但它在日常Linux使用和脚本编程中发挥着关键作用。通过合理使用其提供的选项和特性,可以简化和增强shell脚本的表达能力。

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

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

相关文章

基于地理坐标的高阶几何编辑工具算法(2)——相交面裁剪

文章目录 工具步骤应用场景算法输入算法输出算法示意图算法原理后处理 工具步骤 选中一个需要裁剪的面,点击“相交面裁剪”工具,多选裁剪模板面,空格执行。 应用场景 常用于基于遥感影像的建筑物几何面编辑。 算法输入 一个待裁剪的面&a…

sqlserver的查询(三)

目录 10. group by(分组) 11. having(对分组后的信息过滤) 可能从这里开始,执行顺序越来越显得重要了!!! 10. group by(分组) 这个查询相比前面会有一些困难; 格式:group by 字段的集合; 功…

Java进阶学习笔记8——单继承、Object类、方法重写

Java 是单继承的,Java中的类不支持多继承,但是支持多层继承。 Object类是所有类的父类。 Java不支持多类继承: Java支持多层继承: 反证法: Object类: Object类是java所有类的祖宗类,我们写的任…

每日AIGC最新进展(10):符号音乐生成SYMPLEX、新型图像编辑数据集ReasonPix2Pix、角色一致性插画生成、高级的风格个性化扩散模型

Diffusion Models专栏文章汇总:入门与实战 SYMPLEX: Controllable Symbolic Music Generation using Simplex Diffusion with Vocabulary Priors http://arxiv.org/abs/2405.12666v1 本文介绍了一种新的符号音乐生成方法,名为SYMPLEX,它基于…

【QGIS入门实战精品教程】5.3:CGCS2000转Lambert投影

参考阅读: 【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影 文章目录 一、加载实验数据二、投影转换三、批量投影转换一、加载实验数据 加载配套实验数据,如下图所示:图层为长沙市范围、长沙市酒店宾馆分布点位、湖南省酒店分布点位矢量数据。 双击图层,打开信…

网段与广播域

ip地址与子网掩码做与运算得到网络号,得到的网络号相同就是同一个网段,否则不是,跟他们在什么位置没有任何关系 这里面pc3和前两个pc虽然不在同一个网段,但是pc1发广播包的时候,pc3也能收到,因为路由器的所…

Vue 安装vue

1、官网安装下载安装nodejs 2、安装完成后,通过命令查看版本,可以查看到版本 node -v npm -v 3、安装Vue CLi npm install -g vue/cli 4、创建项目,vue create test 如果遇到报错: ERROR Error: spawn yarn ENOENT Error: spawn yarn ENOENT at ChildP…

Dilworth 定理

这是一个关于偏序集的定理,事实上它也可以扩展到图论,dp等中,是一个很有意思的东西 偏序集 偏序集是由集合 S S S以及其上的一个偏序关系 R R R定义的,记为 ( S , R ) (S,R) (S,R) 偏序关系: 对于一个二元关系 R ⊂…

用 vue3 + phaser 实现经典小游戏:飞机大战

本文字数:7539字 预计阅读时间:30分钟 01 前言 说起小游戏,最经典的莫过于飞机大战了,相信很多同学都玩过。今天我们也来试试开发个有趣的小游戏吧!我们将从零开始,看看怎样一步步实现一个H5版的飞机大战&a…

【pyspark速成专家】4_Spark之RDD编程2

目录 四,常用PairRDD的转换操作 五,缓存操作 四,常用PairRDD的转换操作 PairRDD指的是数据为长度为2的tuple类似(k,v)结构的数据类型的RDD,其每个数据的第一个元素被当做key,第二个元素被当做value. reduceByKey #reduceByKey…

如何参与github开源项目并提交PR

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&…

高速公路定向广播(声光一体) HT-600D

1、产品概述: HT-600D声光一体平面波IP定向广播是北京恒星科通创新性研发产品,采用公司自主研发的平面波传声技术,该产品具有高声压、强指向性、高清晰度等特点,采用定向声传声技术将声音聚集到正前方定向传输,周边声压级明显降低…

YOLOV10实时端到端目标检测

代码地址:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 论文地址:https://arxiv.org/pdf/2405.14458 本文介绍了YOLO系列目标检测器在实时和高效方面的优势,但是仍然存在一些缺陷,包括依赖非极大值…

React useState修改对象

在 React 中,useState 是一个 Hook,它可以让函数组件拥有状态。当想要改变一个对象类型的状态时,我们需要使用展开运算符(...)或者 Object.assign 来确保状态是正确地更新。 以下是一个使用 useState 来更新对象的例子…

webstorm新建vue项目相关问题

前言 这个迭代后端需求偏少,前端code的键盘都起火星子了。来了4个外包支持,1个后端3个前端,还是不够用啊。刚好趁这个机会稍微学习下vue,其实之前环境也配置过了,所以这里就不分享环境配置了,主要分享下新建…

Java开发大厂面试第22讲:Redis 是如何保证系统高可用的?它的实现方式有哪些?

高可用是通过设计,减少系统不能提供服务的时间,是分布式系统的基础也是保障系统可靠性的重要手段。而 Redis 作为一款普及率最高的内存型中间件,它的高可用技术也非常的成熟。 我们今天分享的面试题是,Redis 是如何保证系统高可用…

什么是组态?什么是工业控制中的组态软件?

随着工业4.0和智能制造的发展,工控软件的应用越来越广泛,它们在提高生产效率、降低能耗和减少人力成本等方面发挥着越来越重要的作用。 什么是工控软件? 工控软件是指用于工业控制系统的软件,主要应用于各种生产过程控制、自动化…

PLSQL连接Linux Oracle21c

PLSQL连接Linux Oracle21c 一、安装PLsql 下载官网 https://www.allroundautomations.com/registered-plsqldev/ 二、Oracle Instant Client下载 使用plsql连接oracle的时候是需要本地先安装oracle客户端,英文名就是Oracle Instant Client。 官方下载地址&…

初出茅庐的小李博客之用MQTT.fx软件进行消息发布与订阅【 基于EMQX Cloud】

MQTT.fx软件使用简单介绍 MQTT.fx 的软件界面如下图所示,最上方为 MQTT Broker 连接地址栏,及其连接配置。其下方功能 Tabs 含有 Publish 发布栏、Subscribe 订阅栏、Scripts 脚本栏、Broker Status 状态消息栏、Log 日志信息控制栏。 连接之前要明确几…

【Linux系列】软链接使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…