跳转到主要内容
模块 3 · 第 1 课(共 2)课程中的6/11~15 min
模块课程(1/2)

输出和重定向(echo、cat、>)

在 Linux 中,几乎所有命令都从输入流读取数据并将结果写入输出流。这些通道称为标准流:

  • 标准输入 (stdin):命令从中读取输入的流(默认为键盘)。
  • 标准输出 (stdout):命令将其成功输出写入的流(默认为终端屏幕)。
  • 标准错误 (stderr):命令写入错误消息的流(默认为屏幕)。

使用命令行,我们可以重定向这些流以将结果直接保存到文件中。


打印文本:echo

echo 命令只是将其参数写入其标准输出(屏幕):

Bash
echo "Hello everyone"

重定向输出(覆盖):>

如果要将命令的输出保存到文件而不是将其显示在屏幕上,可以使用大于重定向运算符 >:

Bash
echo "Hello everyone" > greetings.txt

此命令运行 echo 并将其输出重定向到文件 greetings.txt。

[!重要] 如果文件 greetings.txt 不存在,则会创建该文件。如果它已经存在,其现有内容将被完全删除并用新输出覆盖。


读取文件内容:cat

要即时查看一个或多个文本文件的内容,请使用 cat 命令(concatenate 的缩写):

Bash
cat greetings.txt

附加输出:>>

如果您想将新行追加到现有文件的末尾而不是覆盖它,则必须使用追加运算符 >>:

Bash
echo "New line of text" >> greetings.txt

现在,使用 cat greetings.txt 读取文件将显示第一行和第二行。


使用示例和常见错误

您可以同时将多个文件传递给 cat 以按顺序显示它们(串联):

Bash
cat notes.txt info.txt
# Output:
# Keep learning Linux!
# Linux is awesome.

您可以使用 > 运算符将组合输出重定向到第三个文件:

Bash
cat notes.txt info.txt > combined.txt

如果您尝试读取不存在的文件,cat 将写入错误消息:

Bash
cat nonexistent_file.txt
# Output:
# cat: nonexistent_file.txt: No such file or directory

自己尝试一下

练习 1:创建包含问候语的文件

锻炼#linux.m3.l1.e1
尝试:0加载中...

使用 echo 和 > 运算符创建一个名为“hello.txt”的文件,其中包含文本“Hello World”。

正在加载编辑器...
显示提示

使用 echo 后跟引号中的字符串、> 运算符和 hello.txt。

3 次尝试后可用的解决方案

练习 2:将注释附加到文件

锻炼#linux.m3.l1.e2
尝试:0加载中...

将行“Linux is fun”附加到现有“notes.txt”文件的末尾,而不删除其当前内容。

正在加载编辑器...
显示提示

使用>> 运算符将文本附加到notes.txt 文件中。

3 次尝试后可用的解决方案

练习 3:连接文件

锻炼#linux.m3.l1.e3
尝试:0加载中...

连接文件“notes.txt”和“info.txt”的内容,并将组合输出保存到名为“combined.txt”的新文件中。

正在加载编辑器...
显示提示

使用 cat 后跟两个源文件的名称,并使用 > 将输出重定向到目标文件。

3 次尝试后可用的解决方案