我有一个与终端上的用户交互的程序。
但如果它崩溃了,我想通过另一个工具通过管道传输 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
您可以使用格式化实用程序来输出错误文本,而不仅仅是使用该实用程序。