如何在Linux上使用Echo命令

回声 该命令非常适合将格式化的文本写入终端窗口。而且它不必是静态文本。它可以包括外壳程序变量,文件名和目录。您还可以重定向echo以创建文本文件和日志文件。遵循此简单指南以了解操作方法。

回声重复您告诉它重复的内容

宙斯喜欢离开奥林匹斯山与美丽的仙女结伴。在一次旅行中,他告诉一个叫Echo的山若虫,如果她的妻子赫拉(Hera)跟着他的话,要杀死他。赫拉确实来找宙斯,而回声竭尽所能让赫拉保持对话。最终,赫拉发脾气并诅咒可怜的回声,因此她只重复别人说的最后一句话。赫拉在追赶宙斯时对宙斯所做的事情是任何人的猜测。

那几乎是 回声生活中很多。它重复了被告知要重复的内容。这是一个简单的功能,但至关重要。没有 回声 ,例如,我们将无法从shell脚本中获得可见的输出。

虽然没有太多的风吹草动,但很有可能 回声 具有某些您不了解或忘记的功能。

回声?回声!

大多数Linux系统提供两种版本的 回声。 Bash外壳有其自己的 回声 内置在其中,并且有一个二进制的可执行版本 回声 也一样

通过使用以下命令,我们可以看到两个不同的版本:

输入回声
回声在哪里

类型 command告诉我们作为参数传递给它的命令是内置的shell,二进制可执行文件,别名还是函数。它向我们报告 回声 是内置的shell。

找到答案后, 类型 停止寻找其他比赛。因此,它不会告诉我们系统中是否存在其他具有相同名称的命令。但是它确实告诉我们它首先找到哪个。这就是我们发出该命令时默认使用的命令。

哪里 command会寻找二进制可执行文件,源代码和手册页,作为我们作为命令行参数传递给它的命令。它不寻找shell内置程序,因为它们没有单独的二进制可执行文件。它们是Bash可执行文件不可或缺的一部分。

哪里 命令报告 回声 是位于 /箱 目录。

使用该版本的 回声 您需要通过在命令行上提供可执行文件的路径来显式调用它:

/ bin / echo --version

内置的shell不知道 - 版本 命令行参数是,它只是在终端窗口中重复它:

回声-版本

此处显示的示例均使用默认版本的 回声,在Bash shell中。

将文字写入终端

要将简单的文本字符串写入终端窗口,请键入 回声 以及您要显示的字符串:

回声我叫戴夫。

为我们重复了这段文字。但是,当您进行实验时,您很快就会发现事情可能会变得稍微复杂一些。看这个例子:

echo我叫Dave,我是一个怪胎。

终端窗口显示一个> 签名并坐在那里,等待。 Ctrl + C将使您返回命令提示符。那里发生了什么?

“我”一词中的单引号或单引号引起了混淆 回声。它将单引号解释为文本中被引号部分的开头。由于它没有检测到结尾的单引号,回声 在等待更多的输入。它期望进一步的输入包括它正在等待的缺少单引号。

要在字符串中包含单引号,最简单的解决方案是将整个字符串用双引号引起来:

echo“我叫Dave,我是个极客。”

用双引号引起来的文字是很好的一般建议。在脚本中,它清楚地分隔了您要传递给的参数 回声。这使阅读和调试脚本变得更加容易。

如果要在文本字符串中包含双引号字符怎么办?这很简单,只需加一个反斜杠 \ 在双引号前面(它们之间没有空格)。

回声“我叫戴夫,我是一个“怪胎”。

这将“ geek”一词用双引号括起来。我们将看到更多这些 反斜杠转义 字符。

将变量与echo一起使用

到目前为止,我们已经在终端窗口中编写了预定义的文本。我们可以将变量与 回声 产生更具动态性的输出,并通过shell为我们插入值。我们可以使用以下命令定义一个简单的变量:

my_name =“戴夫”

称为 我的名字 已经被创造了。已为其分配了文本“ Dave”的值。我们可以在传递给的字符串中使用变量名 回声 ,该变量的值将被写入终端窗口。你必须放一个美元符号 $ 在变量名前面让 回声 知道这是一个变量。

有一个警告。如果您将字符串用单引号引起来 回声 将按字面意义对待一切。拥有变量 价值 显示,而不是 名称 的变量,请使用双引号。

echo'我的名字是$ my_name'
echo“我的名字是$ my_name”

适当地,值得重复一遍:

  • 使用 单身的 用引号引起的文本将被写到终端窗口中 文字 时尚。
  • 使用双倍的 引号导致变量被解释(也称为变量扩展),并且 价值 被写入终端窗口。

有关的:如何在Bash中使用变量

将命令与echo一起使用

我们可以使用以下命令 回声 并将其输出合并到写入终端窗口的字符串中。我们必须使用美元符号 $ 就像命令是一个变量一样,将整个命令用括号括起来。

我们将使用date命令。提示之一是,在与以下命令一起使用之前,请先单独使用该命令 回声。这样,如果命令的语法有问题,请先识别并更正它,然后再将其包含在 回声 命令。然后,如果 回声 该命令无法满足您的预期,您将知道问题一定出在 回声 语法,因为您已经证明了该命令的语法。

因此,请在终端窗口中尝试以下操作:

日期+%D

而且,满意于我们从date命令中获得了期望,我们将其集成到了 回声 命令:

echo“今天的日期是:$(date +%D)”

请注意,该命令位于括号和美元符号内 $ 在第一个括号之前。

用回声格式化文本

-e (启用反斜杠转义)选项使我们可以使用一些反斜杠转义的字符来更改文本的布局。这些是我们可以使用的反斜杠转义字符:

  • \一种:警报(历史上称为BEL)。这将生成默认的警报声音。
  • \ b:写一个退格字符。
  • \C:放弃任何进一步的输出。
  • \ e:写一个转义字符。
  • \F:编写换页符。
  • \ n:写一个新行。
  • \ r:写入回车符。
  • \ t:写一个水平制表符。
  • \ v:写入垂直制表符。
  • \\:写一个反斜杠字符。

让我们使用其中的一些,看看它们的作用。

echo -e“这是一长行文字\ ns跨越三行\ nwith \ ttabs \ ton \ t \ tthird \ tline”

文字会被换成新行,我们在其中使用了 \ n 字符,并在其中使用了 \ t 人物。

echo -e“这里\ vare \ vvertical \ vtabs”

\ n 换行符,垂直制表符 \ v 将文本移到下面的行。但是,与\ n 换行符 \ v 垂直标签不会在第0列开始新行。它使用当前列。

\ b 退格字符将光标移回一个字符。如果有更多文本要写入终端,则该文本将覆盖前一个字符。

回声-e“ 123 \ b4”

“ 3”被“ 4”覆盖。

\ r 回车符的原因回声 返回到当前行的开头,并从第0列开始写入任何其他文本。

回声-e“ 123 \ r456”

“ 123”字符被“ 456”字符覆盖。

\一种 警报字符将产生可听见的“哔哔”声。它使用当前主题的默认警报声音。

echo -e“发出哔声\ a”

-n (无换行符)选项不是反斜杠转义的序列,但它确实会影响文本布局的外观,因此我们将在此处进行讨论。它可以防止 回声 从在文本末尾添加换行符。命令提示符直接出现在写入终端窗口的文本之后。

echo -n“没有最终的换行符”

在文件和目录中使用echo

您可以使用 回声 作为一种穷人的版本 ls。使用时,您的选择很少而且相差很远 回声 像这样。如果您需要任何一种保真度或精细控制,最好使用 ls 及其众多选择。

此命令列出当前目录中的所有文件和目录:

回声*

此命令列出名称以“ D”开头的当前目录中的所有文件和目录:

回声D *

此命令列出当前目录中的所有“ .desktop”文件:

回声* .desktop

是的。这不是玩 回声的长处。用 ls.

回显写入文件

我们可以重定向输出 回声 并创建文本文件或写入现有文本文件。

如果我们使用 > 重定向运算符,如果文件不存在,则创建该文件。如果文件确实存在,则输出 回声 在文件的开头添加,覆盖以前的所有内容。

如果我们使用 >> 重定向运算符,如果文件不存在,则创建该文件。来自的输出 回声 被添加到文件的末尾,并且不会覆盖文件的任何现有内容。

回声“创建一个新文件。” > sample.txt
回显“添加到文件”。 >> sample.txt
猫sample.txt

第一个命令将创建一个新文件,并将文本插入其中。第二个命令在文件底部添加一行文本。这 命令将文件的内容显示到终端窗口。

当然,我们可以包含变量,以将一些有用的信息添加到文件中。如果文件是日志文件,则可能需要添加时间戳。我们可以使用下一个命令来做到这一点。

请注意参数的单引号 日期 命令。它们可以防止将参数之间的空格解释为参数列表的末尾。他们确保将参数传递给日期 正确地。

回显“日志文件已开始:$(date +'%D%T')”> logfile.txt
猫logfile.txt

我们的日志文件是为我们创建的, 向我们展示了datestamp和timestamp均已添加到其中。

有关的:什么是Linux上的stdin,stdout和stderr?

那是回声的曲目

一个简单的命令,但是必不可少的。如果不存在,就必须发明它。

毕竟,宙斯的恶作剧起到了一些作用。


$config[zx-auto] not found$config[zx-overlay] not found