Linux echo 命令:超越基础知识

2023-10-24

The echoLinux 中的命令允许您显示文本或将数据输出到终端。

它可用于各种目的,例如打印变量的值、生成格式化输出,甚至调试脚本。
在终端中尝试以下命令:


echo "Hello, world!"
  

在这里,“你好,世界!”被打印到终端。这echo命令将字符串作为参数并将其打印到标准输出,默认情况下这是您的终端。

 

 

什么是标准输出?

标准输出,通常缩写为 stdout,是程序写入其输出数据的默认数据流。

在Linux和类Unix系统中,标准输出默认是屏幕或终端。
我们来看一个简单的命令:


echo "This is standard output"
  

此命令会将“这是标准输出”打印到您的终端。默认情况下,echo命令将其输出发送到标准输出。

 

语法和选项

的一般语法为echo命令是:


echo [option]... [string]...  

The echo命令支持以下选项:

  • -n:此选项可防止尾随换行符。默认情况下,echo在输出末尾附加一个换行符。使用-n抑制这种行为。
  • -e:此选项启用反斜杠转义的解释。它允许您使用特殊字符,例如\n对于换行符,\t用于选项卡等。
  • -E:此选项禁用反斜杠转义的解释。这是默认行为echo,但可以用于清晰起见或覆盖不同环境中的任何默认更改。

 

回显变量

在 bash 脚本中,您可以创建变量来存储信息。随着echo命令,可以显示这些变量的内容。
首先,我们创建一个变量:


name="John Doe"
  

现在,让我们打印这个变量的值:


echo $name
  

在这里,“John Doe”将被打印到您的终端。

通过使用$变量名前的符号 ($name),你告诉 Bash 你想要显示的内容name多变的。

您还可以显示以下值环境变量使用回声:


echo $USER  

这将打印当前登录的用户。

 

打印特殊字符

您可以使用以下命令显示这些特殊字符echo使用反斜杠 (\) 这称为转义字符。

它告诉 Bash 将下一个字符视为文字字符,而不是特殊字符。

在 Bash 中,特殊字符是具有特定功能的字符。例如,$符号用于变量替换。
让我们尝试输出一个美元符号:


echo "\$100"
  

此命令将在您的终端上打印“$100”。

 

抑制尾随换行符

默认情况下,echo命令在其输出末尾添加一个换行符。如果你想抑制这个换行符,你可以使用-n option.


echo -n "No newline here"
  

执行该命令后,打印“No newline here”,但光标停留在同一行。

 

禁用反斜杠转义的解释

The -E选项禁用反斜杠转义的解释,这是默认行为echo。这意味着特殊字符将被视为纯文本。


echo -E "Hello\nWorld"
  

该命令将打印“Hello\nWorld”,因为-E阻止了echo口译命令\n作为换行符。

 

反斜杠转义的解释

The -e选项启用反斜杠转义的解释。这允许您使用特殊字符,例如\n对于新线路,\t用于选项卡等。


echo -e "Hello\nWorld"
  

该命令将打印:


Hello
World
  

通过使用-e, the echo命令解释n作为换行符,这就是为什么“Hello”和“World”打印在不同的行上。

警报(响铃)

The \a字符会触发蜂鸣声或终端中的警报。它也被称为铃字符。


echo -e "\a"
  

当您运行此命令时,您会听到蜂鸣声。

退格键

The \b字符被解释为退格键。它删除前一个字符。


echo -e "Helloo\b World"
  

该命令将打印“Hello World”。多余的“o”被退格字符删除b.

抑制进一步输出

The \c字符会抑制该行上的任何进一步输出。


echo -e "Hello\c World"
  

该命令将打印“Hello”,然后隐藏该行的其余部分,因此不会出现“World”。

Escape

The \e字符是转义字符。它可用于启动其他字符的转义序列。


echo -e "\e"
  

该命令只打印一个空行,因为\e本身不产生任何可见的输出。

它通常与转义序列中的其他字符结合使用,例如打印彩色输出,我们将在本教程后面看到。

换页

The \f字符是换页符。它用于将光标移动到下一页的开头。

然而,由于终端没有页面,\f只需将光标移动到新行。


echo -e "Hello\fWorld"
  

该命令将打印:


Hello
     World
  

New line

The \n字符是换行符。它用于开始新行。


echo -e "Hello\nWorld"
  

该命令将打印:


Hello
World
  

The n角色在“Hello”之后开始新的一行。

回车符

The \r字符是回车符。它将光标移回行首。


echo -e "Hello\rWorld"
  

该命令将打印“World”。回车符\r打印“Hello”后将光标移回行首,“World”打印在行首,覆盖“Hello”。

水平制表符

The \t字符是水平制表符。它插入一个制表符空格。


echo -e "Hello\tWorld"
  

该命令将打印“Hello World”。这\t字符在“Hello”和“World”之间插入了一个制表符空格。

垂直标签

The \v字符是垂直制表符。它开始一个新行并在下一个字符之前添加一些空格。


echo -e "Hello\vWorld"
  

该命令将打印:


Hello
     World
  

反斜杠

The \\序列代表文字反斜杠。


echo -e "Hello\\World"
  

该命令将打印“Hello\World”。

ASCII 码为 nnn(八进制)的字符

您可以使用\0nnn用它来表示一个字符ASCII 码八进制格式。确保更换nnn与要打印的字符的八进制 ASCII 代码。


echo -e "\0061"
  

该命令将打印“a”。 “a”的 ASCII 码以八进制格式表示为 61,因此\0061代表“a”。

 

使用 ANSI 转义码打印彩色输出

您可以使用 ANSI 转义码在终端中打印彩色输出。 ANSI 转义码开头\e[后面跟着一些参数,并以m.
让我们打印“Hello, world!”红色的:


echo -e "\e[31mHello, world!\e[0m"
  

该命令打印“Hello, world!”红色的。转义码\e[31m将文本颜色更改为红色,并且\e[0m将其重置回默认颜色。

 

将 echo 输出重定向到文件

您可以使用>运算符重定向输出echo到一个文件。


echo "Hello, world!" > hello.txt
  

运行此命令后,将创建一个名为“hello.txt”的文件,以及“Hello, world!”被写入此文件。如果该文件已经存在,则其内容将替换为“Hello, world!”。

 

附加到文件

The >>运算符可用于附加输出echo到一个文件。


echo "Hello again!" >> hello.txt
  

该命令添加“Hello again!”到“hello.txt”的末尾。它不会覆盖现有内容,只是附加到现有内容上。

 

通过管道将输出输出到另一个命令

The |(管道)运算符用于将一个命令的输出作为另一命令的输入传递。


echo "Hello, world!" | wc -w
  

该命令打印“2”。这echo命令生成字符串“Hello, world!”,然后将其通过管道传输到wc -w命令。

The wc -w命令计算输入中的单词数,因此打印“2”。

 

带回声的引号

当您使用变量或转义序列时echo,记得用引号。


name="John Doe"
echo "$name"
echo -e "Hello\nWorld"
  

第一个命令打印“John Doe”,第二个命令打印:


Hello
World
  

如果没有引号,变量将不会被扩展,转义序列也不会被解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux echo 命令:超越基础知识 的相关文章

  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • Apache 端口转发 80 到 8080 并访问 Apache (80) 中托管的应用程序,即 phpMyadmin 和 Tomcat (8080)

    我想访问托管在 tomcat 服务器 8080 中的应用程序 myapp 当前可以通过以下方式访问http example com 8080 myapp http example com 8080 myapp in http example
  • 应用程序中两个不同版本的库

    考虑一个场景 其中有两个不同版本的共享库 考虑 A 1 so 链接到 B so A 2 so 链接到 C so 现在 B so 和 C so 都链接到 d exe 当 B so 想要调用 A 1 so 中的函数时 它最终会调用 A 2 so
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的

随机推荐

  • 如何在 Ubuntu 18.04 上安装 Java

    Java 是世界上最流行的编程语言之一 用于构建不同类型的跨平台应用程序 本教程介绍如何在 Ubuntu 18 04 上安装各种版本的 OpenJDK 以及 Oracle Java 相同的说明适用于 Ubuntu 16 04 和任何基于 U
  • 如何在 Ubuntu 18.04 上安装 Apache Cassandra

    Apache Cassandra 是一个免费的开源 NoSQL 数据库 不存在单点故障 它提供线性可扩展性和高可用性 而不会影响性能 Apache Cassandra 被许多组织使用 包括 Apple NetFlix eBay 和 Easo
  • Linux 中的超时命令

    timeout是一个命令行实用程序 它运行指定的命令 并在给定时间段后终止该命令 如果该命令仍在运行 换句话说 timeout允许您运行有时间限制的命令 这timeout命令是 GNU 核心实用程序包的一部分 几乎所有 Linux 发行版上
  • 如何在 CentOS 7 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 在大多数情况下 当在虚拟机上运行 CentOS 时 不存在交换
  • 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机

    在本教程中 我们将提供有关如何在 Ubuntu 18 04 上设置 Apache 虚拟主机的分步说明 Apache 虚拟主机允许您在一台计算机上运行多个网站 使用虚拟主机 您可以指定站点文档根目录 包含网站文件的目录 为每个站点创建单独的安
  • 如何在 Ubuntu 20.04 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 它是 Microsoft 的开源替代品远程桌面协议 RDP 本文介绍如何在 Ubuntu 20 04 上安装和配置 VNC 服务器 我们还将向您展示如何
  • 如何在 Ubuntu 18.04 上禁用防火墙

    Ubuntu 附带了一个名为 UFW 简单防火墙 的防火墙配置工具 UFW 是一个用户友好的前端 用于管理 iptables 防火墙规则 其主要目标是使管理防火墙规则更容易 或者顾名思义 不复杂 强烈建议保持防火墙启用 但是 在某些情况下
  • 如何在 Debian 9 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制

    MySQL 复制是将数据从一台数据库服务器 主服务器 复制到一台或多台服务器 从服务器 的过程 MySQL 支持多种复制拓扑 其中主 从拓扑是最著名的拓扑之一 其中一台数据库服务器充当主服务器 而一台或多台服务器充当从服务器 默认情况下 复
  • 如何在 Ubuntu 18.04 上安装 Ghost

    Ghost 是一个构建在 Node js 平台之上的现代源代码发布平台 它完全可定制且易于使用 使您可以以几乎零的学习曲线发布内容 在本教程中 我们将向您展示如何使用 Nginx 作为代理 免费的 Let s Encrypt SSL 证书
  • 使用 NumPy 范数计算向量和矩阵范数

    在线性代数中 范数是为向量空间中的每个向量分配严格正的长度或大小的函数 它是矢量大小的度量 从数学上来说 对于一个向量x the p 范数定义为 x p sum xi p 1 p 在本教程中 我们将使用numpy linalg norm f
  • 在 Pandas query() 中使用字符串方法:数据帧过滤

    The Pandas 中的 query 方法允许您过滤数据帧 并且当与字符串方法结合使用时 可能性变得广泛 在本教程中 您将学习如何在query 功能来细化和过滤数据 目录 hide 1 检查子字符串 str contains 2 str
  • Seaborn histplot(用直方图可视化数据)

    Seaborn 是最广为人知的数据可视化库之一 运行在Matplotlib 通过 Seaborn 我们可以渲染各种类型的绘图 并提供简单 直观且高度可定制的 API 来生成数据可视化 如果没有丰富的可视化 就很难理解数据并与数据进行交流 想
  • Kivy 教程 – 使用 Python 构建桌面 GUI 应用程序

    Kivy 是一个开源 Python 库 您可以使用它在 Windows Linux macOS Android 和 iOS 上创建应用程序 我们将讨论如何使用 Kivy 按钮 标签 回收视图 滚动视图 Kivy Canvas 和其他小部件来
  • NumPy 矩阵乘法(从理论到实际示例)

    矩阵乘法是线性代数中的基本运算 它采用一对矩阵并产生另一个矩阵 用数学术语来说 给定两个矩阵 A 和 B 乘积 AB 是通过 A 的行与 B 的列的点积来计算的 本教程旨在深入了解矩阵乘法NumPy 目录 hide 1 逐元素与矩阵乘法 2
  • Python相关矩阵教程(使用Pandas)

    在本博客中 我们将介绍一个重要的多变量数据描述性统计量 称为相关矩阵 我们将学习如何在 Python 中使用以下命令创建 绘制和操作相关矩阵Pandas 我们将讨论以下主题 目录 hide 1 What is the correlation
  • Shell 脚本编写分步教程

    在本教程中 我们将讨论 shell 脚本以及如何制作第一个 shell 脚本 它们通常被称为 shell 脚本 但我们将它们称为 Bash 脚本 因为我们将在其他 Linux shell 中使用 Bash 有 zsh tcsh ksh 和其
  • 使用 Curl 命令下载文件:综合指南

    本教程深入探讨使用以下命令下载文件的方法卷曲命令 我们将介绍 HTTP 下载 安全 HTTPS 传输 使用 FTP 服务器的基础知识 甚至浏览分段下载和速度调整等高级功能 目录 hide 1 下载到标准输出 2 下载并保存到文件 3 验证
  • 使用 to_numpy() 将 Pandas DataFrame 转换为 NumPy 数组

    The DataFrame to numpy 函数 由提供Pandas库 提供了一种将 DataFrame 转换为NumPy 数组 它返回一个 ndarray NumPy 的基本数据结构 可以使用各种 NumPy 库函数轻松操作它 当您想要
  • Linux echo 命令:超越基础知识

    The echoLinux 中的命令允许您显示文本或将数据输出到终端 它可用于各种目的 例如打印变量的值 生成格式化输出 甚至调试脚本 在终端中尝试以下命令 echo Hello world 在这里 你好 世界 被打印到终端 这echo命令