【问题标题】:> and &> produce different results [closed]> 和 &> 产生不同的结果 [关闭]
【发布时间】:2019-06-03 02:39:49
【问题描述】:

我正在尝试将命令的标准输出保存到输出文件output.txt

我不明白为什么当我使用&> 时一切正常,而当我使用> 时,一些奇怪的符号(如[0m[0;1;32m)随机出现在整个文件中。

是什么原因造成的?

我的调查表明,这些符号是终端着色。但是为什么当我使用 &> 时它们会消失?

【问题讨论】:

  • 命令是什么?
  • 这些看起来像 ASCII 转义序列(例如,在 shell 中提供彩色输出),但我不确定为什么它们在一种情况下可见,而在另一种情况下不可见。
  • 是的,我自己也意识到了这一点。该命令是来自 clang 的 ast-dump,我不明白,为什么 &> 设法将其过滤掉
  • 这些符号看起来像是用来着色输出的 termcap 转义码。当 stdout 是终端时,命令有时会产生这种彩色输出,而当 stdout 不是终端(例如管道或磁盘文件)时,命令会恢复为纯文本。 &> 重定向 stdout 和 stderr 所以这有点令人困惑 - 正如@rghome 所说,请指定命令。
  • 重定向标准错误会影响标准输出?这听起来有点坏了。

标签: bash macos unix pipe io-redirection


【解决方案1】:

它可能会检查stderr 是否连接到终端,如果是,则使用颜色控制代码。当您使用 &> 重定向时,stdoutstderr 都未连接到终端,因此不使用颜色代码。

【讨论】:

  • 我也这么认为。一种“证明”是执行commandcommand 2>/dev/null。第一次调用应该有彩色输出,但不是第二次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2017-09-11
相关资源
最近更新 更多