如何将 stderr 和 stdout 重定向到脚本中同一行中的不同文件?
- 2024-10-23 08:47:00
- admin 原创
- 81
问题描述:
我知道这么多:
$ command 2>> error
$ command 1>> output
有什么方法可以将 stderr 输出到错误文件,并将 stdout 输出到输出文件,放在 bash 的同一行中?
解决方案 1:
只需在一行中添加它们command 2>> error 1>> output
但请注意,>>
如果文件已有数据,则用于附加。而>
将覆盖文件中的任何现有数据。
所以,command 2> error 1> output
如果您不想附加。
只是为了完成,你可以写成1>
只是>
因为默认文件描述符是输出。所以1>
和>
是同一件事。
因此command 2> error 1> output
,command 2> error > output
解决方案 2:
尝试一下:
your_command 2>stderr.log 1>stdout.log
更多信息
数字0
到9
是bash 中的
文件描述符0
。代表标准输入,1
代表标准输出,2
代表标准错误。3
到9
可供其他临时使用。
任何文件描述符都可以使用操作符 重定向到文件或另一个文件描述符>
。您也可以使用操作符>>
将内容追加到文件,而不是创建空文件。
用法:
file_descriptor > filename
file_descriptor > &file_descriptor
请参阅高级 Bash 脚本指南:第 20 章 I/O 重定向。
解决方案 3:
就像这样:
$ command >>output 2>>error
解决方案 4:
或者,如果您喜欢在一个文件中混合输出(stdout 和 stderr),您可能需要使用:
command > merged-output.txt 2>&1
解决方案 5:
可以重定向多个命令的输出。这适用于命令行或最有用的 bash 脚本。-s
将密码提示定向到屏幕。
此处块命令 stdout/stderr 被发送到单独的文件并且不显示任何内容。
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
这里块命令 stdout/stderr 被发送到单个文件并显示。
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
这里块命令 stdout/stderr 被发送到单独的文件和 stdout 来显示。
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
根据您的身份(whoami)和用户名,可能需要或不需要密码。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD