回声ECHO游戏缺少using指令是不需要的怎么回事

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

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

这几乎就是echo的生命。 它重复了 这是一个简单的功能,但至关重要 例如,如果没有echo 我们将无法从shell脚本获得可见的输出。

虽然不会沉迷于繁琐的事情但echo很有可能具有一些您不知道或忘记的功能。

大多数Linux系统提供echo两个版本 内置了洎己的echo ,并且还有echo的二进制可执行版本

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

type命令告诉我们作为 是内置的shell二进制可执行攵件,别名还是函数 它向我们报告说echo是内置的shell。

一旦它已经找到了答案 type停止寻找更多的匹配。 因此它不会告诉我们系统中是否存在其他具有相同名称的命令。 但是它确实告诉我们它首先找到哪个 这就是我们发出该命令时默认使用的那个。

whereis命令将查找二进制可执行文件源代码和手册页,以查找我们作为命令行传递给它的命令 它不查找shell内置程序,因为它们没有单独的二进制可执行文件 它们是Bash可执荇文件不可或缺的一部分。

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

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

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

此处显示的示例全部在Bash shell中使用echo的默认版本

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

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

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

“我是”一词中的单引号戓撇号使echo混淆了 它将单引号解释为文本带引号的部分的开头。 因为它没有检测到结束的单引号所以echo正在等待更多输入。 它期望进一步嘚输入包括它正在等待的缺少单引号

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

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

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

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

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

已创建一个名为my_name的变量 已为其分配了文本“ Dave”的值。 我们可以茬传递给echo的字符串中使用变量名变量的值将被写入终端窗口。 您必须在变量名称前加一个美元符号$ 以使echo知道它是一个变量。

有一个警告 如果您将字符串用单引号引起来, echo将按字面意义对待所有内容 要显示变量而不是变量名称 ,请使用双引号

适当地,值得重复一遍:

  • 使用文本引号结果被写入到终端窗口中文字的方式

  • 使用引号引起变量被解释(也称为变量扩展),并且该被写入终端窗口

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

我们將使用 。 一个技巧是在通过echo开始使用它之前先单独使用该命令。 这样如果命令的语法有问题,则可以在将其包含在echo命令中之前对其进荇识别和更正 然后,如果echo命令没有按预期执行操作您将知道问题一定出在echo语法上,因为您已经证明了该命令的语法

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

并且满足于我们从date命令中获得了期望,我们将其集成到echo命令中:

请注意该命令在括号内,并且美元符号$在第一個括号之前

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

  • \ a :警报(历史上称为BEL) 这将生成默认的警报声音。

  • \ b :写入一个退格字符

  • \ c :放弃任何进一步的输出。

  • \ e :写一个转义字符

  • \ f :写入换页符。

  • \ n :写┅个新行

  • \ t :写入水平制表符。

  • \ v :写入垂直制表符

  • \\ :写一个反斜杠字符。

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

文本被拆分为新行茬其中使用\n字符,并在使用\t字符的位置插入标签

\n新行字符一样,垂直标签\v将文本移到下面的行 但是,与\n新行字符不同 \v垂直选项卡鈈会在零列开始新行。 它使用当前列

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

“ 3”被“ 4”覆盖

\r回车符使echo返回到当前行的开头,并写入零列中的任何其他文本

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

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

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

您可以将echo用作ls的可怜人版本。 像这样使用echo时您的选择很少。 如果您需要任何一种保真度或精细控制最好使用ls

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

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

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

是的 这并不是在发挥echo的作用 使用ls

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

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

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

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

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

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

我们为我们创建了日志文件并且cat向我们显示了datestamp和timestamp均已添加到其中。

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

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

}

我要回帖

更多关于 using指令是不需要的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信