ag 输出在终端中与通过管道传输到文件时显示不同

Sea*_*sey 4 terminal io-redirection

当我运行ag命令来搜索文本文件时,我在命令行上得到如下所示的输出(未显示完整结果):

\n\n
\xe2\x9d\xaf ag dependency\n140317155505.md\n27:The Bundler dependencies API ...\n\n140423193022_python_packages.md\n61:`distutils` is part of the Python standard ....\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出中有换行符。但是,当我通过管道或重定向到文件时,我得到如下输出:

\n\n
140317155505.md:27:The Bundler dependencies API...\n140423193022_python_packages.md:61:`distutils` is part of the Python standard...\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里有一个额外的冒号而不是换行符。这是如何运作的?我认为它ag只是写入 STDOUT 并且不知道 STDOUT 的实际目标——我认为它无法访问此信息是错误的吗?

\n

小智 6

我通过 Google 到达这里,但没有找到我正在寻找的答案:您可以将 ag 调用为

ag --color --group
Run Code Online (Sandbox Code Playgroud)

强制它使用默认颜色并按文件对结果进行分组,无论输出是否为 tty。

这是它实际的样子