在 macos 终端中,使用大于号 > 可以将命令的标准输出覆盖写入文件。如果文件不存在则自动创建,若已存在则清空原内容并重新写入;若需追加到文件末尾而不丢失原有数据,应使用双大于号 >>。

如何避免覆盖已有文件内容
当目标文件已经存在时,单重定向符 > 会直接抹去文件中的旧数据。为了防止意外丢失重要信息,应当使用追加模式 >>。这会将新产生的输出接在文件现有内容的后面,而不是替换它。

echo "第一行内容" > output.txt echo "第二行内容" >> output.txt cat output.txt
上述代码执行后,output.txt 将包含两行文本。第一行由 > 创建并写入,第二行由 >> 追加。最终文件内容为:
第一行内容 第二行内容
如何处理命令执行时的错误信息
默认情况下,> 仅捕获标准输出(stdout),而错误信息(stderr)仍会打印在终端屏幕上。若要将错误日志也保存到文件中,需要单独对文件描述符 2 进行重定向。通常的做法是将标准错误重定向到与标准输出相同的文件,或者分别保存。

ls /nonexistent_path > result.txt 2> error.txt cat error.txt
运行上述命令时,由于路径不存在,ls 会产生错误。该错误信息会被写入 error.txt,而 result.txt 将为空(因为没有成功输出)。若希望将输出和错误都合并到一个文件中,可以使用 &> 或 >&1,例如:command > all_output.txt 2&>1。
基于特定输入条件的重定向行为差异
当命令本身没有产生任何标准输出,且未发生错误时,重定向操作依然会作用于文件。如果使用 >,即使命令无输出,目标文件也会被创建(或清空为0字节)。这一行为在处理脚本或自动化任务时需特别注意,因为文件的存在性可能依赖于命令是否真正产生了数据。











