echo 命令使用说明(Linux)

适用环境

  • Bash/Zsh 等常见 Shell(echo 通常为内建命令)
  • 也可能存在外部 /bin/echo(行为与内建略有差异)

基本语法

echo [选项] [字符串...]

常用选项

  • -n: 结尾不输出换行
  • -e: 解析反斜杠转义(非 POSIX,部分系统默认无效)
  • -E: 禁用转义解析(通常为默认行为)

说明:不同系统/不同 Shell 对 -e/-E 的支持存在差异;可移植脚本更推荐使用 printf

常见转义(配合 -e

  • \n: 换行
  • \t: 制表符(Tab)
  • \r: 回车
  • \a: 响铃(Beep)
  • \b: 退格
  • \c: 结尾不再输出后续内容
  • \e\x1b: ESC(有的实现不支持 \e
  • \0NNN: 八进制字符(NNN 为 1-3 位八进制)
  • \xHH: 十六进制字符(HH 为 1-2 位十六进制)

示例:

echo -e "第一行\n第二行"
echo -e "列1\t列2\t列3"

不换行输出

echo -n "正在处理..."; sleep 1; echo "完成"

重定向输出到文件

  • 覆盖写入:>
  • 追加写入:>>
echo "hello" > file.txt
echo "world" >> file.txt

以 root 权限写入(避免 sudo 只作用于 echo 而非重定向):

echo "配置" | sudo tee /etc/my.conf > /dev/null

多行文本输出

  1. 使用转义换行:
echo -e "line1\nline2\nline3"
  1. 推荐使用 printf(可移植、格式强):
printf "line1\nline2\nline3\n"
  1. 写入多行到文件(Here-Doc):
cat > notes.txt << 'EOF'
第一行
第二行
包含 $VAR 与 \n 等字符不会被展开
EOF

颜色与高亮(ANSI 转义)

echo -e "\e[31m红色\e[0m 普通 \e[1m加粗\e[0m"

常用颜色码:30-37 前景色,90-97 亮色;40-47 背景色。\e[0m 重置。

变量与命令替换

name="Alice"
echo "Hello, $name"            # 变量
echo "今日日期: $(date +%F)"   # 命令替换

注意:若包含空格或通配符,建议加引号:

echo "$PATH"

与 printf 的对比(为何常推荐 printf)

  • echo 在不同平台的选项与转义行为不一致(如 -e)。
  • printf 语义一致、可控,适合脚本与复杂格式化:
printf "%-10s %5d\n" "user" 42

常见用法示例

# 1) 追加日志并带时间戳
echo "[$(date +%F' '%T)] task done" >> /var/log/app.log# 2) 输出 JSON(注意引号)
echo '{"name":"bob","id":1}'# 3) 生成简单配置文件
echo "PORT=8080" > .env
echo "DEBUG=true" >> .env# 4) 输出空行
echo# 5) 显示包含反斜杠的原文
echo "path=C:\\Windows\\System32"

跨平台与兼容性提示

  • echo 更适合简单输出;脚本严谨性与可移植性优先时使用 printf
  • dashbusyboxfish 等环境里,echo -e 行为可能不同。
  • 区分 Shell 内建 echo/bin/echo
    type echo   # 查看 echo 来自何处
    

速查表

  • 基础:echo "text"
  • 不换行:echo -n "text"
  • 解析转义:echo -e "a\nb"
  • 覆盖/追加到文件:> / >>
  • 写 root 文件:echo ... | sudo tee /path
  • 推荐复杂输出:使用 printf

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

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

相关文章

Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码

前言&#xff1a;在当今数字化浪潮席卷的时代&#xff0c;企业的采购管理面临着前所未有的挑战与机遇。传统采购模式因流程繁琐、效率低下、信息不透明等问题&#xff0c;已难以满足企业快速发展的需求。电子采购管理系统作为一种创新的采购解决方案&#xff0c;借助先进的信息…

应用开发使用缓存

在 Java 开发的典型架构&#xff08;结合前端、后端、MyBatis、MySQL 及缓存机制&#xff09;中&#xff0c;缓存层次可以从前端到后端再到数据库进行划分&#xff0c;通常涉及以下多层缓存&#xff1a;1. 前端缓存浏览器缓存&#xff1a;浏览器自带的缓存机制&#xff08;如 H…

leetcode算法刷题的第二十六天

今天主要是要用贪心算法来解决重置区间的问题。 1.leetcode 452.用最少数量的箭引爆气球 题目链接 class Solution { public:static bool cmp(const vector<int>& a,const vector<int>& b){return a[0]<b[0];}int findMinArrowShots(vector<vecto…

BlueZ 学习之GATT Server开发

Linux下&#xff0c;使用C语言开发一个简单的GATT Server&#xff0c;我的Ubuntu上跑的BlueZ版本是5.79&#xff0c;使用的GLib库版本是2.85.2&#xff0c;这里我直接使用GLib里的D‑Bus来实现与BlueZ通信。BlueZ 官方推荐通过 D-Bus 进行通信和控制&#xff0c;如果是要使用原…

【Linux基础】Linux文件系统深度解析:EXT4与XFS技术详解与应用

目录 引言 1 Linux文件系统概述 1.1 文件系统的基本概念 1.2 日志文件系统的概念 2 EXT4文件系统详解 2.1 EXT4概述 2.2 EXT4的磁盘结构 2.3 EXT4的inode结构 2.4 EXT4的新特性 2.4.1 Extents 2.4.2 延迟分配 2.4.3 快速文件系统检查 2.5 EXT4的性能特点 3 XFS文…

埃文科技荣获2025年“数据要素×”大赛河南分赛二等奖

2025年8月19日&#xff0c;2025年“数据要素”大赛河南分赛决赛在郑州举行&#xff0c;本届河南分赛聚焦数据价值赋能。郑州埃文科技有限公司&#xff08;以下简称“埃文科技”&#xff09;凭借其前沿成果“IP地址高精度地理定位及应用场景划分数据集”&#xff0c;从500多支参…

链上迷局:区块链技术的法律暗礁与合规导航

高鹏律师首席数据官&#xff0c;数字经济团队创作AI辅助区块链&#xff0c;这个被誉为“信任机器”的技术&#xff0c;正以颠覆性的力量重塑数字经济的底层逻辑。从比特币的横空出世到NFT的全民狂欢&#xff0c;从DeFi的金融革命到DAO的组织重构&#xff0c;技术永不眠&#xf…

线性代数基础 | 基底 / 矩阵 / 行列式 / 秩 / 线性方程组

注&#xff1a;本文为 “线性代数基础 ” 相关合辑。 略作重排&#xff0c;未作全校。 如有内容异常&#xff0c;请看原文。 线性代数的本质&#xff08;1&#xff09;——基底、向量、线性变换、逆阵、行列式 野指针小李于 2020-08-13 16:34:45 发布 零、基底 在展开后续内…

GORM.io详细指南

GORM.io 详细指南 GORM&#xff08;全称 Go ORM&#xff09;是一个功能丰富的 ORM&#xff08;Object-Relational Mapping&#xff09;库&#xff0c;用于 Go 语言。它简化了数据库操作&#xff0c;将 SQL 查询映射到 Go 结构体&#xff0c;支持多种数据库后端。GORM 的设计理念…

【Flask】测试平台开发,应用管理模块实现-第十一篇

概述通过Element UI抽屉和表单校验&增改接口合并实现应用管理Drawer 抽屉之前产品修改和添加是使用Dialog组件实现的&#xff0c;但这个组件有时候并不满足我们的需求, 比如表单很长, 亦或是你需要临时展示一些文档, Drawer 是可以从侧面弹出的一个层&#xff0c;可以容纳更…

Elasticsearch 深分页限制与解决方案

最近在准备面试&#xff0c;正把平时积累的笔记、项目中遇到的问题与解决方案、对核心原理的理解&#xff0c;以及高频业务场景的应对策略系统梳理一遍&#xff0c;既能加深记忆&#xff0c;也能让知识体系更扎实&#xff0c;供大家参考&#xff0c;欢迎讨论。在项目中遇到一个…

基于偏最小二乘法PLS多输入单输出的回归预测【MATLAB】

基于偏最小二乘法&#xff08;PLS&#xff09;多输入单输出的回归预测【MATLAB】 在科学研究和工程实践中&#xff0c;我们常常需要根据多个相关变量来预测一个关键结果。例如&#xff0c;根据气温、湿度、风速等多个气象因素预测空气质量指数&#xff0c;或根据多种原材料成分…

SQL Server核心架构深度解析

SQL Server 的体系结构是一个复杂但设计精密的系统&#xff0c;主要可以分为四大核心组件&#xff0c;它们协同工作以管理数据库、处理查询、确保数据安全与一致性。以下是其体系结构的核心组成部分&#xff1a; 核心组件&#xff1a;协议层 (Protocol Layer) 作用&#xff1a;…

Django REST Framework Serializer 进阶教程

1. 序列化器概述 在 Django REST Framework&#xff08;DRF&#xff09;中&#xff0c;序列化器&#xff08;Serializer&#xff09;用于将复杂的数据类型&#xff08;如模型实例&#xff09;转换为 JSON 格式&#xff0c;以便于 API 返回给客户端。此外&#xff0c;序列化器还…

面试问题详解十四:Qt 多线程同步【QSemaphore】讲解

在多线程开发中&#xff0c;经常需要控制多个线程对共享资源的访问数量。例如限制同时下载文件的数量、控制数据库连接池的连接使用等等。这时候&#xff0c;Qt 提供的 QSemaphore&#xff08;信号量&#xff09;就非常派得上用场。一、什么是 QSemaphore&#xff1f; QSemapho…

Spark mapGroups 函数详解与多种用法示例

mapGroups 是 Spark 中一个强大的分组操作函数&#xff0c;它允许你对每个分组应用自定义逻辑并返回一个结果。以下是多个使用简单样例数据的具体用法示例。基础示例数据假设我们有一个简单的学生成绩数据集&#xff1a;// 创建示例DataFrame val studentScores Seq(("Ma…

【图论】Graphs.jl 图数据的读写与生成器

文章目录图数据的读写Graphs.loadgraphGraphs.loadgraphsGraphs.savegraph保存单个图保存图字典Graphs.loadlg_multGraphs.savelgGraphs.savelg_mult图的生成器1. 随机图模型1.1 Erdős–Rnyi 模型1.2 巴拉巴西-阿尔伯特模型 (无标度网络)1.3 小世界网络模型1.4 随机块模型 (SB…

Go指针全解析:从基础到实战

基本概念与定义指针的定义指针是一种特殊的变量类型&#xff0c;它存储的不是实际数据值&#xff0c;而是另一个变量在计算机内存中的地址。在底层实现上&#xff0c;指针本质上是保存内存位置的无符号整数&#xff0c;它直接指向内存中的特定位置&#xff0c;允许程序直接操作…

Oracle 查询有哪些用户 提示用户名密码无效

要查询 Oracle 数据库中的所有用户&#xff0c;可以使用以下 SQL 查询语句。这个查询将返回数据库中所有用户的列表。 [] SELECT username FROM all_users ORDER BY username;如果你有足够的权限&#xff08;通常是 DBA 权限&#xff09;&#xff0c;你也可以使用 dba_users 视…

小白成长之路-develops -jenkins部署lnmp平台

文章目录一、准备工作1.1两台虚拟机1.2配置文件1.3免密登录二、实战1.构建主item2.测试nginx,php,mysql2.1新建测试项目2.2与正式项目绑定构建后的操作2.3测试2.4导入discuz项目总结一、准备工作 1.1两台虚拟机 服务器&#xff1a;192.168.144.24 客户端&#xff1a;192.168.…