> 环境与工具 > redirect

重定向指南:改变命令输入/输出方向

Linux shell 中的重定向功能用于改变命令的标准输入/输出方向。当需要将文件内容作为输入,或将命令结果保存到文件而不是显示在屏幕上时使用。它是与管道符 (`|`) 一起,在 shell 脚本和数据处理中最基本的工具之一。

重定向概述

Linux 系统将所有输入/输出视为文件。重定向功能通过改变这些基本输入/输出流的方向,使得命令的输出可以写入文件而不是显示在屏幕上,或者文件内容可以作为命令的输入。

标准输入/输出流

所有命令默认使用以下三种标准流:

  • 标准输入 (stdin, 0): 命令读取数据的通道。默认是键盘。
  • 标准输出 (stdout, 1): 命令正常结果输出的通道。默认是屏幕(终端)。
  • 标准错误 (stderr, 2): 命令错误消息输出的通道。默认是屏幕(终端)。

重定向运算符

可以使用各种重定向运算符来控制输入/输出的方向。如果直接使用 `redirect` 命令本身,如生成的命令所示,会发生错误。必须使用 `>`、`>>`、`<` 等符号。

1. 标准输出重定向

2. 标准错误重定向

3. 标准输入重定向

生成的命令:

请尝试组合命令。

描述:

`redirect` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

常用示例

通过重定向的各种示例,学习如何控制输入/输出。

将命令结果保存到文件

ls -l > file_list.txt

将 `ls -l` 命令的结果保存到 `file_list.txt` 文件中,如果文件已存在则覆盖。

将多个命令结果追加到同一文件

echo "--- 工作开始 ---" >> log.txt
date >> log.txt

将 `echo` 命令的结果追加到 `log.txt` 文件中,然后将 `date` 命令的结果追加到同一个文件中。使用 `>>` 保留现有内容。

将错误消息单独分离到文件

ls non_existent_file 2> error.log

执行对不存在文件的 `ls` 命令,并将错误消息 (`2>`) 重定向到 `error.log` 文件。正常输出仍显示在屏幕上。

将输入文件传递给命令

sort < numbers.txt

将 `sort` 命令的输入指定为 `numbers.txt` 文件以排序文件内容。`sort` 接收文件内容作为标准输入进行处理。

输出和错误都到一个文件

ls /home non_existent_file &> output_and_error.log

将正常输出和错误消息都保存到 `output_and_error.log` 文件中。


相关命令

功能上相似或经常一起使用的命令。


相同类别命令