仅当终端应用程序崩溃时才通过管道传输 stderr

仅当终端应用程序崩溃时才通过管道传输 stderr

我有一个与终端上的用户交互的程序。

但如果它崩溃了,我想通过另一个工具通过管道传输 stderr 来整理/漂亮地打印它。

有没有办法做到这一点?

据我所知,重定向 stderr 的方法都涉及使用 stdout 执行某些操作,这会隐藏/破坏交互式终端。

答案1

您可能必须将程序包装在一个小的 bash 脚本中,但这是可行的。您可以重定向stderr到文件,同时保留stdout在屏幕上显示:

#!/usr/bin/env bash

# Run my program, with stderr saved to a file
my_program 2> /tmp/stderr_output.txt

# If the program returned with anything but success, print stderr
if [ ! $! ]; then
    cat /tmp/stderr_output.txt
fi

cat您可以使用格式化实用程序来输出错误文本,而不仅仅是使用该实用程序。

相关内容