Linux 中的 echo 命令用于显示作为参数传递的文本/字符串行。 这是一个内置命令。我们在写shell脚本shell 脚本和批处理文件,用于将状态文本输出到屏幕或文件。echo命令比较基础,但是功能还比较丰富。在本篇文章中,您将了解在 Linux 中使用 echo 命令的所有不同方式。
echo命令语法
Linux 中的 echo 命令用于显示用户提供的字符串。
echo [option] [string]
例如,我们使用自己实现的echo命令打印 Hello, World! 作为输出:
除了基本用法,还可以配合一些选项使用。
- echo命令选项:
使用 --help 参数列出所有可用的 echo 命令选项:
注意:–e 在这里启用反斜杠转义的解释。
- \b
它删除文本之间的所有空格
echo -e “Are \byou \bok”
- \c
使用退格解释器“-e”抑制尾随的新行以继续而不发出新行。
echo -e “Are \cyou ok”
在上面的例子中, \c 之后的文本不会被打印出来并且省略了尾随的新行。
- \n
此选项从使用它的位置创建新行。
.echo -e “Are \nyou \nok”
- \t
此选项用于创建水平制表符空间。
echo -e “Are \tyou \tok”
- \r
使用退格解释器‘-e’回车以在输出中指定回车。
echo -e “Are \ryou ok”
在上面的示例中,不会打印 \r 之前的文本。
- \v
此选项用于创建垂直制表符空间。
echo -e “Are \vyou \vok”
- echo *
该命令将打印所有文件/文件夹,类似于 ls 命令。
echo *
echo 输出颜色文本
使用 ANSI 转义序列可以更改输出文本的颜色:
echo -e ‘\033[1;37mWHITE’
echo -e ‘\033[0;30mBLACK’
echo -e ‘\033[0;31mRED’
echo -e ‘\033[0;34mBLUE’
echo -e ‘\033[0;32mGREEN’
可以使用以上命令输出彩色的文本。
echo 执行命令
如果我们想要输出uptime命令执行后的结果,我们可能会使用如下命令:
对uptime命令不熟悉的,可以参考这篇文章Linux下系统运行时间(uptime)命令使用及代码实现
显示变量值
echo 命令还用于将变量值显示为输出。 例如,要显示当前用户的名称,请使用:
echo $USER
显示命令输出
echo 命令允许您在输出中包含其他命令的结果:
echo "[string] $([command])
例如,使用以下命令列出主目录中的所有文件和目录:
echo “Show current directory path: $(pwd)”
写入文件
使用 > 或 >> 将字符串包含在文件的 echo 命令中,而不是将其显示为输出:
echo -e ‘Hello, World! \nThis is Minger!’ >> test.txt
echo 简单实现
#include <stdio.h>
#include <assert.h>
#include <sys/types.h>
#include <ctype.h>
/* 十六进制字符转换为整数 */
static int hextobin (unsigned char c)
{
switch (c)
{
default: return c - '0';
case 'a': case 'A': return 10;
case 'b': case 'B': return 11;
case 'c': case 'C': return 12;
case 'd': case 'D': return 13;
case 'e': case 'E': return 14;
case 'f': case 'F': return 15;
}
}
int main(int argc, char **argv)
{
bool do_v9 = false;
bool display_return = true;
--argc;
++argv;
while (argc > 0 && *argv[0] == '-')
{
char const *temp = argv[0] + 1;
size_t i;
/* 如果看起来我们正在处理选项,那么请确保
所有指定的选项实际上都是有效的。 否则,
字符串应该只是回显。 */
for (i = 0; temp[i]; i++)
switch (temp[i])
{
case 'e':
case 'E':
case 'n':
break;
default:
goto just_echo;
}
if (i == 0)
goto just_echo;
/* temp 中的所有选项都是 ECHO 的有效选项。处理它们。 */
while (*temp)
switch (*temp++)
{
case 'e':
do_v9 = true;
break;
case 'E':
do_v9 = false;
break;
case 'n':
display_return = false;
break;
}
argc--;
argv++;
}
just_echo:
if (do_v9)
{
while (argc > 0)
{
char const *s = argv[0];
unsigned char c;
while ((c = *s++))
{
if (c == '\\' && *s)
{
switch (c = *s++)
{
case 'a': c = '\a'; break;
case 'b': c = '\b'; break;
case 'c': return 0;
case 'e': c = '\x1B'; break;
case 'f': c = '\f'; break;
case 'n': c = '\n'; break;
case 'r': c = '\r'; break;
case 't': c = '\t'; break;
case 'v': c = '\v'; break;
case 'x':
{
unsigned char ch = *s;
if (! isxdigit (ch))
goto not_an_escape;
s++;
c = hextobin(ch);
ch = *s;
if (isxdigit (ch))
{
s++;
c = c * 16 + hextobin (ch);
}
}
break;
case '0':
c = 0;
if (! ('0' <= *s && *s <= '7'))
break;
c = *s++;
break;
case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
c -= '0';
if ('0' <= *s && *s <= '7')
c = c * 8 + (*s++ - '0');
if ('0' <= *s && *s <= '7')
c = c * 8 + (*s++ - '0');
break;
case '\\': break;
not_an_escape:
default:
putchar ('\\');
break;
}
}
putchar (c);
}
argc--;
argv++;
if (argc > 0)
putchar(' ');
}
}
else
{
while (argc > 0)
{
fputs(argv[0], stdout);
argc--;
argv++;
if (argc > 0)
putchar (' ');
}
}
if (display_return)
putchar ('\n');
return 0;
}
总结
echo 命令是一个内置的 Linux 功能,可将参数打印为标准输出。 echo 通常用于将文本字符串或命令结果显示为消息。