bash - 如何识别Linux屏幕上打印的内容?

标签 bash shell pipe stdout stderr

我在我的 C++ 应用程序中使用一个库,并 try catch 文件中的所有输出。我尝试将 stderr 重定向到 stdout,然后将 stdout 重定向到文件,如下所示:

./a.out 2>&1 > out.txt

这捕获了我的应用程序中的几乎所有内容,但控制台上仍然有一些与我正在使用的库相关的输出。我的问题是:

  • 除了 stdout/stderr 之外还有什么吗? (标准输入除外)
  • 如果有,我如何在我的案例中识别这些?
  • 然后我如何将它们重定向到同一个文件?

注意:如果有人熟悉,库名为 SystemC (这是一个基于 C++ 的事件驱动模拟库/语言,主要用于系统/硬件设计)。

最佳答案

您必须在任何流到流重定向之前设置输出文件,否则 bash 无法检测要输出的文件名。在您的情况下,您可以看到 stderr 输出。

参见bash redirections引用手册。

解决方案:

./a.out >out.txt 2>&1

或者只是:

./a.out &>out.txt

关于bash - 如何识别Linux屏幕上打印的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147658/

相关文章:

bash - 计算文本文件中的回文数

arrays - bash:在额外条件下循环文件

linux - Linux shell 中的真正并行性

linux - 在 shell 中扫描程序的输出

c - 在子进程处于事件状态并运行时读取和写入

python - 为什么只有在管道传输 python 脚本的输出时才会出现 unicode 错误?

linux - 如何使用 sed 更改 puppet 文件的 [block] 之间的内容?

bash - 2 grep 在 if 语句中

mysql - 如何在 linux 中创建批量 mysql 上传脚本

python - 通过ØMQ发送python多处理连接