用于覆盖写入标准输出到文件,>> 用于追加写入;二者均不捕获错误信息,错误仍输出到终端;> 等价于 1>,2>/dev/null 可屏蔽错误;勿与 | 或 ? 混用。

用 > 符号就能把标准输出重定向到文件,这是最常用也最直接的方式。
覆盖写入:用 > 创建或清空再写入
执行命令时加上 > 文件名,系统会把正常输出(stdout)写进指定文件:
- 如果文件不存在,自动创建;
- 如果文件已存在,先清空原有内容,再写入新结果;
- 等价于
1> 文件名,因为标准输出的文件描述符是 1,但通常省略数字。
例如:ls -l > file_list.txt —— 把当前目录详细列表保存到 file_list.txt 中,原文件内容会被替换。
追加写入:用 >> 在文件末尾添加内容
不想覆盖已有内容?改用 >>:
- 文件不存在时同样自动创建;
- 文件存在时,新输出会接在最后一行后面,不破坏原有数据;
- 适合记录日志、多次收集结果等场景。
例如:date >> log.txt —— 每次运行都把当前时间追加到 log.txt 底部。
只保留标准输出,忽略错误信息
默认情况下,> 和 >> 只捕获标准输出(stdout),错误信息(stderr)仍会显示在终端。如果你只想保存正常结果,这恰恰是预期行为。
- 比如
grep "test" /etc/passwd > result.txt,匹配行写入文件,权限错误等提示仍在屏幕上; - 若想屏蔽错误,可额外加
2>/dev/null,如:grep "test" /etc/* > result.txt 2>/dev/null。
常见误区提醒
别把 > 和管道 | 或通配符 ? 混用 —— 它们功能完全不同:
-
>是重定向输出到文件; -
|是把前一个命令的输出传给后一个命令处理; -
?是匹配单个字符的通配符,不能用于重定向。


















