重定向单个命令的标准输出简单明了:
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脚本编程最佳实践》专栏,专栏里有更多的实用小技巧和脚本代码分享。