Linux中的Echo命令及实例
echo
命令是Linux中最基本和最经常使用的命令之一。传给echo
的参数被打印到标准输出。
echo
在shell脚本中常用来显示一条信息或输出其他命令的结果。
echo命令
echo
是Bash和其他大多数流行的shell(如Zsh和Ksh)中的一个内置程序。 它的行为在不同的shell中稍有不同。
也有一个独立的/usr/bin/echo
工具,但通常情况下,shell的内置版本会优先考虑。我们将介绍Bash的内置版本的echo
。
echo
命令的语法如下:
echo [-neE] [ARGUMENTS]
- 当使用
-n
选项时,尾部的换行被抑制了。 - 如果给出
-e
选项,将解释以下反斜杠转义字符:\\
- 显示一个反斜杠字符。\a
- 警报(BEL)\b
- 显示一个退格字符。\c
- 抑制任何进一步的输出。\e
- 显示一个转义字符。\f
- 显示换页符。\n
- 显示一个新行。\r
- 显示一个回车键。\t
- 显示水平制表符。\v
- 显示垂直制表符。
-E
选项禁用转义字符的解释。这是默认值。
在使用echo
命令时,有几点需要考虑。
- shell在将参数传递给
echo
命令之前,会将所有的变量、通配符和特殊字符替换掉。 - 虽然不是必须的,但用双引号或单引号括住传递给
echo
的参数是一个很好的编程实践。 - 当使用单引号
''
时,引号内所包含的每个字符的字面价值将被保留下来。变量和命令将不会被扩展。
echo
例子
下面的例子说明了如何使用echo命令。
在标准输出上显示一行文本。
echo Hello, World!
输出
Hello, World!
显示包含双引号的文本行。
要打印双引号,请用单引号将其括起来,或用反斜杠字符转义。
echo 'Hello "Linuxize"'
echo "Hello \"Linuxize\""
输出
Hello "Linuxize"
显示一行包含单引号的文本。
要打印单引号,请将其置于双引号内,或使用ANSI-C引号 。
echo "I'm a Linux user."
echo $'I\'m a Linux user.'
输出
I'm a Linux user.
显示一个包含特殊字符的信息。
使用
-e
选项来启用对转义字符的解释。echo -e "You know nothing, Jon Snow.\n\t- Ygritte"
输出
You know nothing, Jon Snow. - Ygritte
模式匹配字符。
echo
命令可以与模式匹配字符一起使用,例如通配符。例如,下面的命令将返回当前目录中所有.php
文件的名称。echo The PHP files are: *.php
输出
The PHP files are: index.php contact.php functions.php
重定向到一个文件
你可以使用
>
、>>
运算符将输出重定向到一个文件中,而不是在屏幕上显示输出。echo -e 'The only true wisdom is in knowing you know nothing.\nSocrates' >> /tmp/file.txt
如果file.txt不存在,该命令将创建它。当使用
>
时,该文件将被覆盖,而>>
将把输出结果附加到文件上。使用
cat
命令来查看文件的内容。cat /tmp/file.txt
输出
The only true wisdom is in knowing you know nothing. Socrates
显示变量
echo
也可以显示变量。在下面的例子中,我们将打印当前登录的用户的名字。echo $USER
输出
linuxize
$USER
是一个shell变量,用来存放你的用户名。显示一个命令的输出结果
使用
$(command)
表达式,在echo
的参数中包含命令输出。下面的命令将显示当前日期 。echo "The date is: $(date +%D)"
输出
The date is: 04/17/19
以彩色方式显示
使用ANSI转义序列来改变前景和背景颜色,或设置文本属性,如下划线和粗体。
echo -e "\033[1;37mWHITE"
echo -e "\033[0;30mBLACK"
echo -e "\033[0;34mBLUE"
echo -e "\033[0;32mGREEN"
echo -e "\033[0;36mCYAN"
echo -e "\033[0;31mRED"
echo -e "\033[0;35mPURPLE"
echo -e "\033[0;33mYELLOW"
echo -e "\033[1;30mGRAY"
总结
现在,你应该对echo
命令的工作原理有了很好的了解。
如果你有任何问题或反馈意见,请随时留言。