赞
踩
echo命令非常适合将格式化的文本写入终端窗口。 并且它不必是静态文本。 它可以包括外壳变量,文件名和目录。 您还可以重定向echo以创建文本文件和日志文件。 遵循此简单指南以了解操作方法。
宙斯喜欢离开奥林匹斯山与美丽的仙女结伴。 在一次旅行中,他告诉一个叫Echo的山若虫,如果她的妻子赫拉(Hera)跟着他的话,要杀死他。 Hera确实来找宙斯,而Echo竭尽所能让Hera保持对话。 最后,赫拉发脾气并诅咒可怜的回声,所以她只重复别人说的最后一句话。 赫拉在追赶宙斯时对宙斯所做的事是所有人的猜测。
那几乎是生活中的回声。 它重复了被告知要重复的内容。 多数民众赞成在一个简单的功能,但至关重要的。 例如,如果没有echo,则无法从shell脚本获得可见的输出。
尽管回声不散,但回声很有可能具有某些您不了解或遗忘的功能。
大多数Linux系统提供两种版本的echo。 Bash shell内置了自己的echo,并且还有echo的二进制可执行版本。
通过使用以下命令,我们可以看到两个不同的版本:
输入echowhereis echo
type命令告诉我们作为参数传递给它的命令是内置的shell,二进制可执行文件,别名还是函数。 它向我们报告说echo是内置的shell。
找到答案后,请立即停止寻找其他匹配项。 因此,它不会告诉我们系统中是否存在其他具有相同名称的命令。 但是它确实告诉我们它首先找到哪个。 那就是我们发出该命令时默认使用的那个。
whereis命令查找我们作为其命令行参数传递给它的命令的二进制可执行文件,源代码和手册页。 它不查找shell内置程序,因为它们没有单独的二进制可执行文件。 它们是Bash可执行文件不可或缺的一部分。
whereis命令报告echo是位于/ bin目录中的二进制可执行文件。
要使用该版本的echo,您需要通过在命令行上提供可执行文件的路径来显式调用它:
要使用该版本的echo,您需要通过在命令行上提供可执行文件的路径来显式调用它:
内置的shell不知道--version命令行参数是什么,它只是在终端窗口中重复它:
回声-版本
此处显示的示例均在Bash shell中使用默认版本的echo。
要将简单的文本字符串写入终端窗口,请键入echo和您希望其显示的字符串:
回声我叫戴夫。
为我们重复了这段文字。 但是当您进行实验时,您很快就会发现事情可能会变得稍微复杂一些。 看这个例子:
echo我叫Dave,我是个极客。
终端窗口显示“>”标志,坐在那里等待。 Ctrl + C将使您返回命令提示符。 那里发生什么了?
Im单词中的单引号或撇号使echo混淆。 它将单引号解释为文本被引号部分的开始。 因为它没有检测到结尾的单引号,所以echo正在等待更多输入。 它期望进一步的输入包括它正在等待的缺少单引号。
要在字符串中包含单引号,最简单的解决方案是将整个字符串用双引号引起来:
echo“我叫Dave,我是个极客。”
用双引号引起来的文字是很好的一般建议。 在脚本中,它清楚地分隔了要传递给echo的参数。 这使阅读和调试脚本更加容易。
如果要在文本字符串中包含双引号字符怎么办? 这很容易,只需在双引号前面加上一个反斜杠(它们之间没有空格)。
echo“我的名字是Dave,我是一个”怪胎“。
这将geek单词用双引号括起来。很快就会看到更多这些反斜杠转义字符。
到目前为止,我们已经在终端窗口中写入了预定义的文本。 我们可以将变量与echo一起使用,以产生更具动态性的输出,并通过shell为我们插入值。 我们可以使用以下命令定义一个简单的变量:
my_name =“ Dave”已创建一个名为my_name的变量。 已为其分配了文本Dave的值。 我们可以在传递给echo的字符串中使用变量名,变量的值将被写入终端窗口。 您必须在变量名称前加一个美元符号$,以使echo知道它是一个变量。
有一个警告。 如果您将字符串用单引号引起来,则echo将按字面意义对待所有内容。 要显示变量值而不是变量名称,请使用双引号。
echo我的名字是$ my_name echo“我的名字是$ my_name”
适当地,那是值得重复的:
相关:如何在Bash中使用变量
我们可以将命令与echo一起使用,并将其输出合并到写入终端窗口的字符串中。 我们必须像命令是一个变量一样使用美元符号$,并将整个命令括在括号中。
将要使用date命令。 技巧之一是在通过回显开始使用该命令之前先单独使用该命令。 这样,如果命令的语法有问题,则可以在将其包含在echo命令中之前对其进行识别和更正。 然后,如果echo命令没有按预期执行操作,您将知道问题一定出在echo语法上,因为您已经证明了命令语法。
因此,请在终端窗口中尝试以下操作:
日期+%D
并且,满足于从date命令获得了我们期望的结果,并将其集成到echo命令中:
回声“今天的日期是:$(date +%D)”
请注意,该命令位于括号内,而美元符号$紧接在第一个括号之前。
-e(启用反斜杠转义)选项使我们可以使用一些反斜杠转义的字符来更改文本的布局。 这些是我们可以使用的反斜杠转义字符:
让我们使用其中一些,看看它们的作用。
echo -e“这是一长行文本分为三行第三行带有标签”
文本被拆分为新行,我们在其中使用了 字符,并在使用这些字符的位置插入一个选项卡。
echo -e“这里是垂直制表符”
如 换行符,垂直选项卡将文本移到下面的行。 但是,不像在换行符中,垂直选项卡不会在第零列开始换行。 它使用当前列。
退格字符将光标移回一个字符。 如果有更多文本要写入终端,则该文本将覆盖前一个字符。
回声-e“ 123 4”
3被4覆盖。
的 回车符使回声返回到当前行的开头,并从第零列开始写入更多文本。
的 回车符使回声返回到当前行的开头,并从第零列开始写入更多文本。
123个字符被456个字符覆盖。
警报字符将发出声音。 它使用当前主题的默认警报声音。
echo -e“做一个bleepa”
-n(无换行符)选项不是反斜杠转义的序列,但是它确实会影响文本布局的外观,因此,请在此处进行讨论。 它可以防止echo将换行符添加到文本末尾。 命令提示符直接出现在写入终端窗口的文本之后。
echo -n“无最终换行符”
您可以将echo用作ls的一种可怜的版本。 像这样使用echo时,您的选择几乎没有。 如果您需要任何一种保真度或精细控制,最好使用ls及其众多选项。
此命令列出当前目录中的所有文件和目录:
echo *此命令列出名称以D开头的当前目录中的所有文件和目录:
echo D *此命令列出当前目录中的所有.desktop文件:
回声* .desktop
是的 这并不是在发挥呼声。 使用ls。
我们可以重定向echo的输出并创建文本文件或写入现有文本文件。
如果使用>重定向运算符,则如果文件不存在,则会创建该文件。 如果文件确实存在,则echo的输出将添加到文件的开头,从而覆盖以前的所有内容。
如果我们使用>>重定向运算符,则创建该文件(如果不存在)。 echo的输出将添加到文件的末尾,并且不会覆盖文件的任何现有内容。
echo“创建新文件。” > sample.txtecho“添加到文件”。 >> sample.txtcat sample.txt
第一个命令创建一个新文件,并将文本插入其中。 第二个命令在文件底部添加一行文本。 cat命令将文件的内容显示到终端窗口。
当然,我们可以包含变量以向文件中添加一些有用的信息。 如果文件是日志文件,则可能需要添加时间戳。 我们可以使用下一个命令来做到这一点。
注意date命令的参数周围的单引号。 它们可防止参数之间的空格被解释为参数列表的末尾。它们确保参数正确传递到日期。
回显“日志文件已开始:$(date +%D%T)”> logfile.txtcat logfile.txt
我们为我们创建了日志文件,并且cat向我们显示了datestamp和timestamp均已添加到其中。
相关文章:Linux上的stdin,stdout和stderr是什么?
一个简单的命令,但必不可少。 如果它不存在,我们就必须发明它。
毕竟宙斯的恶作剧起到了一些作用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。