如何在linux上使用echo命令

echo命令非常适合将格式化文本写入终端窗口。它不一定是静态文本。它可以包括shell变量、文件名和目录。您还可以重定向echo以创建文本文件和日志文件。按照这个简单的指南来了解如何。...

echo命令非常适合将格式化文本写入终端窗口。它不一定是静态文本。它可以包括shell变量、文件名和目录。您还可以重定向echo以创建文本文件和日志文件。按照这个简单的指南来了解如何。

回声重复你让它重复的东西

宙斯喜欢离开奥林匹斯山,与美丽的仙女交往。在一次旅行中,他告诉一个叫埃科的山里仙女,如果他的妻子赫拉跟着他,他就要拦住她。赫拉确实是来找宙斯的,埃科尽她所能让赫拉保持对话。最后,赫拉发了脾气,诅咒可怜的埃科,让她只重复别人说的最后一句话。赫拉追上宙斯时对宙斯做了什么,谁也猜不到。

而这,在很大程度上,是回声的命运。它重复它被要求重复的东西。这是一个简单的函数,但却是一个至关重要的函数。例如,如果没有echo,我们将无法从shell脚本获得可见的输出。

虽然没有大量的钟声和口哨声,但echo很有可能拥有一些你不知道或忘记的功能。

回声?回声!

大多数Linux系统提供两个版本的echo。bashshell内置了自己的echo,还有一个二进制可执行版本的echo。

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

type echo whereis echo

如何在linux上使用echo命令

type命令告诉我们作为参数传递给它的命令是shell内置的、二进制可执行的、别名还是函数。它向我们报告回声是一个贝壳内置。

一旦找到答案,type就停止寻找进一步的匹配项。所以它不会告诉我们系统中是否存在其他同名命令。但它确实告诉我们它最先找到的是哪一个。这是我们发出命令时默认使用的命令。

whereis命令查找二进制可执行文件、源代码以及作为命令行参数传递给它的命令的手册页。它不寻找shell内置,因为它们没有单独的二进制可执行文件。它们是Bash可执行文件不可分割的一部分。

whereis命令报告echo是位于/bin目录中的二进制可执行文件。

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

/bin/echo --version

如何在linux上使用echo命令

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

echo --version

如何在linux上使用echo命令

这里显示的示例都使用bashshell中echo的默认版本。

向终端写入文本

要将简单的文本字符串写入终端窗口,请键入echo和要显示的字符串:

echo My name is Dave.

如何在linux上使用echo命令

课文为我们重复。但当你做实验时,你很快就会发现事情会变得稍微复杂一些。看看这个例子:

echo My name is Dave and I'm a geek.

如何在linux上使用echo命令

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

“I'm”这个词中的单引号或撇号表示困惑。它将单引号解释为引用的文本部分的开始。因为它没有检测到一个结束的单引号,echo正在等待更多的输入。它希望进一步的输入包括它所等待的丢失的单引号。

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

echo "My name is Dave and I'm a geek."

如何在linux上使用echo命令

将文本用双引号括起来是一个很好的建议。在脚本中,它清楚地限定了要传递给echo的参数。这使得阅读和调试脚本更加容易。

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

echo "My name is Dave and I'm a \"geek.\""

如何在linux上使用echo命令

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

对echo使用变量

到目前为止,我们一直在向终端窗口写入预定义的文本。我们可以使用带有echo的变量来生成更动态的输出,并通过shell将值**其中。我们可以用这个命令定义一个简单的变量:

my_name="Dave"

已经创建了一个名为my\ u name的变量。我们可以在传递给echo的字符串中使用变量名,变量的值将被写入终端窗口。您必须在变量名前面加上美元符号$,以便让echo知道它是一个变量。

有一个警告。如果你把你的字符串用单引号括起来,echo会按字面意思处理一切。要显示变量值而不是变量名称,请使用双引号。

echo 'My name is $my_name' echo "My name is $my_name"

有点贴切,值得重复:

  • 使用单引号会导致文本以文本方式写入终端窗口。
  • 使用双引号会导致解释变量(也称为变量展开),并将值写入终端窗口。

相关:如何在Bash中使用变量

对echo使用命令

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

我们将使用date命令。其中一个技巧是在将命令与echo一起使用之前,先单独使用命令。这样,如果命令的语法有问题,在将其包含在echo命令中之前,您可以识别并更正它。然后,如果echo命令没有达到预期的效果,您就会知道问题一定出在echo语法上,因为您已经证明了命令的语法。

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

date +%D

如何在linux上使用echo命令

而且,如果我们满足于从date命令获得我们期望的结果,我们将把它集成到echo命令中:

echo "Today's date is: $(date +%D)"

如何在linux上使用echo命令

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

使用echo格式化文本

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

  • \a:警报(历史上称为BEL)。这将生成默认的警报声音。
  • \写一个退格字符。
  • \c:放弃任何进一步的输出。
  • \写一个转义符。
  • \f:写一个换页字符。
  • \n:写一行新的。
  • \r:写回车。
  • \t:写一个水平标签。
  • \v:写入垂直选项卡。
  • \\:写入反斜杠字符。

让我们使用其中的一些,看看它们能做什么。

echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"

如何在linux上使用echo命令

文本被拆分为一个新行,在其中使用了\n字符,并在其中**一个制表符。

echo -e "Here\vare\vvertical\vtabs"

如何在linux上使用echo命令

与新行字符一样,垂直制表符将文本移动到下面的行。但是,与新行字符不同,垂直制表符不会从第0列开始新行。它使用当前列。

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

echo -e "123\b4"

如何在linux上使用echo命令

“3”被“4”改写了。

\r回车符使echo返回到当前行的开头,并从第0列开始写入更多的文本。

echo -e "123\r456"

如何在linux上使用echo命令

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

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

echo -e "Make a bleep\a"

如何在linux上使用echo命令

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

echo -n "no final newline"

如何在linux上使用echo命令

对文件和目录使用echo

你可以用echo作为穷人版的ls。当您使用这样的echo时,您的选项非常少。如果您需要任何类型的保真度或精细控制,最好使用ls及其大量选项。

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

echo *

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

echo D*

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

echo *.desktop

如何在linux上使用echo命令

是 啊。这不是在玩弄echo的长处。使用ls。

使用echo写入文件

我们可以重定向echo的输出,或者创建文本文件,或者写入现有的文本文件。

如果使用>重定向运算符,则会在文件不存在时创建该文件。如果文件确实存在,echo的输出将添加到文件的开头,覆盖以前的任何内容。

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

echo "Creating a new file." > sample.txt echo "Adding to the file." >> sample.txt cat sample.txt

如何在linux上使用echo命令

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

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

请注意date命令参数周围的单引号。它们防止参数之间的空格被解释为参数列表的结尾。它们确保参数正确地传递到当前日期。

echo "Logfile started: $(date +'%D %T')" > logfile.txt cat logfile.txt

如何在linux上使用echo命令

我们的日志文件是为我们创建的,cat告诉我们日期戳和时间戳都添加到了日志文件中。

相关:Linux上的stdin、stdout和stderr是什么?

那是echo的剧目

一个简单的命令,但不可或缺。如果它不存在,我们就得发明它。

毕竟,宙斯的恶作剧有一些好处。

  • 发表于 2021-04-03 00:31
  • 阅读 ( 182 )
  • 分类:互联网

你可能感兴趣的文章

linux正在吃掉你的公羊吗?如何管理你的记忆

...的内存。为了理解到底发生了什么,我们必须看看Linux是如何管理内存的。 ...

  • 发布于 2021-03-23 08:31
  • 阅读 ( 316 )

启动linux的9个基本命令

... 如何在linux下打开终端 ...

  • 发布于 2021-03-26 18:33
  • 阅读 ( 229 )

如何在linux中创建新文件

Linux中有几种不同的应用程序和命令可以为您创建新文件,即使不启动应用程序。使用哪种方法取决于文件的用途。让我们看看这些选项,这样您就可以知道哪一个对您最有用。 ...

  • 发布于 2021-03-28 22:06
  • 阅读 ( 246 )

关于linux中bash for loops的所有知识

... 第一行告诉运行这个程序的人如何运行它(即使用bash解释器)。第二个命令与您在命令行中输入的任何其他命令一样。将该文件另存为hello_世界.sh,然后: ...

  • 发布于 2021-03-29 06:22
  • 阅读 ( 313 )

如何使用受限shell来限制linux用户可以做什么

...改其目录,您可以控制他们可以访问哪些命令。下面介绍如何在Linux上设置受限shell。 受限炮弹 受限shell不是另一个shell。这是标准外壳的另一种模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下启动。在本文中,我们将...

  • 发布于 2021-03-31 10:57
  • 阅读 ( 388 )

如何使用shopt定制bashshell

...shshell的行为,您可以控制超过50个设置。我们将向您展示如何按照您喜欢的方式定制您的Linux系统。 shopt内置 shopt内置是bashshell所有版本的一部分,因此不需要安装任何东西。多年来,shopt提供的选项数量稳步增加。所以,Bash...

  • 发布于 2021-04-01 12:30
  • 阅读 ( 176 )

如何使用chsh在linux上更改默认shell

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境...

  • 发布于 2021-04-02 06:04
  • 阅读 ( 338 )

如何在linux上的bash中设置环境变量

Linux上有多种类型的环境变量。了解如何查看它们,为本地和远程登录创建它们,并使它们在重新启动后仍然有效。 环境变量的工作原理 启动终端窗口及其内部的shell时,会引用一组变量,以确保shell配置正确。这些变量还确...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 224 )

如何在linux中向$path添加目录

...但这并没有什么不好的地方。我们将解释它的作用,以及如何调整它。 什么是$path,它是如何工作的($path on linux, and how does it work)? 当您在终端窗口中键入一个命令并按Enter键时,您甚至在执行命令之前就开始了大量的活动。 B...

  • 发布于 2021-04-02 14:04
  • 阅读 ( 188 )

linux下如何使用which命令

...在shell中的,因此Bash不必费劲地查找这些命令。 但是Bash如何定位其他命令、程序和外部独立二进制文件呢?Bash使用路径,实际上是一组路径,每个路径指向一个目录。然后,它在每个目录中搜索与您试图运行的命令或程序匹配...

  • 发布于 2021-04-02 20:07
  • 阅读 ( 172 )
ViV的骑士
ViV的骑士

0 篇文章

相关推荐