bash - stderr 重定向的奇怪行为
问题描述
我试图使用sh/bash重定向某个程序的所有输出,并注意到:
prog &>all.log
工作正常(所有输出都被重定向到文件)
prog 2>err.log >out.log
也可以按预期工作(程序的输出被分成 2 个文件)
但是,如果我prog 2>&1 >all.log
仅将其作为文本运行,则从上一个示例转到 out.log 将转到该文件。其余的打印到控制台。换句话说,与prog >out.log
(如果我完全省略2>&1
)相比,行为没有区别。
我只是摸不着头脑,试图理解为什么2>
在文件的情况下有效,但对&1
. 虽然&>
也可以按预期工作。有人可以向我解释吗?
解决方案
推荐阅读
- python-3.x - 将 Unicode 数据加载到 Oracle 中
- markdown - Github 页面仅在导航到 markdown 链接时显示 index.html 内容
- powershell - “get-process”的远程执行失败,无法连接到远程机器
- angular - 量角器/角度无法点击可点击图标
- javascript - 自动完成动态添加的输入
- r - R:通过 glm 应用 logit 模型时,stats 包如何处理字符向量?
- javascript - 预加载 Google 字体
- ios - 参数标签 '(MDLObject:)' 与 Xcode 10 中的任何可用重载都不匹配
- php - 如何从单个数组 PHP 中获取结果
- c++ - 字符串不被接受为函数的有效参数 (C++)