如何同时重定向多个命令的输出?

超级欧派课程 2024-03-07 03:35:18

重定向单个命令的标准输出简单明了:

date > file

想要重定向标准错误输出?也不费力:

date 2> file

如果你想同时重定向标准输出和标准错误输出,也别担心:

date > file 2>&1

当然,你还可以使用更高级的方式:

# 仅适用于 Bash。一行代码搞定重定向。date &> file

哪怕是重定向整个循环的输出,也不在话下:

for i in "${list[@]}"; do echo "正在处理 $i" # 在这里添加更多操作...done > file 2>&1

但是,若果你需要重定向多个程序的输出,这可能会变得有些繁琐。如果你想将脚本的所有输出都记录到一个文件中(例如日志文件),那就试试 exec 命令:

# 将标准输出和标准错误输出都重定向到 "log.txt"exec > log.txt 2>&1# 现在,所有输出,包括标准错误输出,都会被记录在 "log.txt" 中

当然,如果只是想对一组命令进行重定向,那你可以使用命令分组:

{ date # 这里还可以加入其他命令 echo 完成} > messages.log 2>&1

在这个例子中,花括号内的所有命令输出都会被重定向到文件 messages.log​ 中。

如果您觉得文章内容对你有一点帮助可以关注我,我在头条平台会持续分享更多实用的shell技巧和最佳实践,如果想系统的快速学习shell的各种高阶用法和生产环境避坑指南可以看看《shell脚本编程最佳实践》专栏,专栏里有更多的实用小技巧和脚本代码分享。

0 阅读:0

超级欧派课程

简介:感谢大家的关注