Linux重定向有几种方式?分别适用于什么场景

来源:Python编程网作者:又改需求头衔:程序员
导读:本期聚焦于小伙伴创作的《Linux重定向有几种方式?分别适用于什么场景》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux重定向有几种方式?分别适用于什么场景》有用,将其分享出去将是对创作者最好的鼓励。

Linux重定向是Shell环境里用来改变命令输入输出流向的功能,默认情况下命令会从标准输入读取数据,把结果输出到标准输出,错误信息输出到标准错误,通过重定向可以调整这些流向,适配不同的使用需求。

Linux重定向的基础分类

Linux系统默认有三个标准文件描述符,对应的重定向方式也围绕这三个描述符展开:

  • 标准输入:文件描述符为0,默认从键盘读取输入
  • 标准输出:文件描述符为1,默认输出到终端屏幕
  • 标准错误:文件描述符为2,默认错误信息输出到终端屏幕

1. 标准输出重定向

标准输出重定向可以把命令的正常执行结果输出到指定文件,覆盖原有文件内容,语法是命令 > 目标文件,如果不写文件描述符1,默认就是标准输出重定向。

比如把ls命令的结果输出到test.txt文件里:

# 执行ls命令,结果覆盖写入test.txt,不会在终端显示
ls -l > test.txt
# 等价于下面这种显式指定文件描述符的写法
ls -l 1> test.txt

2. 标准错误重定向

标准错误重定向用来把命令执行产生的错误信息输出到指定文件,语法需要显式指定文件描述符2,写成命令 2> 目标文件

比如执行一个不存在的命令,把错误信息写入err.log:

# 执行不存在的命令,错误信息覆盖写入err.log
no_command 2> err.log

3. 标准输入重定向

标准输入重定向可以让命令从指定文件读取内容,而不是从键盘输入,语法是命令 < 源文件,文件描述符0可以省略。

比如用wc -l统计test.txt的行数,从文件读取内容:

# 统计test.txt的行数,从test.txt读取输入
wc -l < test.txt
# 等价于显式指定文件描述符的写法
wc -l 0< test.txt

常用的扩展重定向方式

追加重定向

默认的>重定向会覆盖目标文件的原有内容,如果需要在文件末尾追加内容,可以使用>>符号,同样分为标准输出追加和标准错误追加。

示例:

# 把ls结果追加到test.txt末尾,不覆盖原有内容
ls -a >> test.txt
# 把错误信息追加到err.log末尾
wrong_command 2>> err.log

合并标准输出和标准错误

有时候需要把命令的正常输出和错误信息都写入同一个文件,有两种常见的实现方式:

  • 方式一:先把标准错误重定向到标准输出,再把标准输出重定向到文件,语法是命令 > 目标文件 2>&1
  • 方式二:使用&>符号直接合并重定向,语法是命令 &> 目标文件

示例:

# 方式一:合并输出到all.log
ls -l /nonexist > all.log 2>&1
# 方式二:合并输出到all.log,等价于上面的写法
ls -l /nonexist &> all.log

重定向到/dev/null

/dev/null是Linux系统的空设备文件,写入这个文件的内容都会被丢弃,如果需要忽略命令的输出或错误信息,可以将其重定向到/dev/null

比如忽略错误信息的示例:

# 执行命令,忽略所有错误信息,正常输出还是会显示在终端
ls /nonexist 2> /dev/null

不同重定向方式的适用场景对比

不同重定向方式的适用场景可以参考下表:

重定向方式语法示例适用场景
标准输出覆盖重定向cmd > file需要把命令结果保存到新文件,不需要保留原有文件内容时
标准输出追加重定向cmd >> file需要把多次命令的结果累积保存到同一个文件时
标准错误重定向cmd 2> file需要单独记录命令执行的错误信息,不干扰正常输出时
合并重定向cmd &> file需要同时记录命令的正常输出和错误信息,统一保存到文件时
标准输入重定向cmd < file命令需要读取外部文件内容作为输入,不需要手动键盘输入时
重定向到/dev/nullcmd > /dev/null不需要查看命令的输出或错误信息,只想执行命令本身时

注意事项

在使用重定向时需要注意几个常见的问题:

  • 重定向符号两边的空格不是必须的,比如ls>test.txt也可以正常执行,不过建议加上空格提升可读性
  • 文件描述符和重定向符号之间不能有空格,比如2> err.log是正确的,2 > err.log会被解析为把文件描述符2作为命令参数,再把结果重定向到err.log,会出现不符合预期的结果
  • 合并重定向时2>&1要放在> file后面,如果顺序反过来,会先把标准错误重定向到终端,再重定向标准输出到文件,达不到合并的效果
重定向是Linux Shell的基础功能,熟练掌握后可以大幅提升命令操作的效率,也可以在编写Shell脚本时更灵活地控制输入输出逻辑。

Linux重定向标准输入标准输出标准错误文件描述符修改时间:2026-06-11 10:27:41

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。