我有一个脚本用于构建程序,我重定向到sed以在构建期间突出显示错误等。
这很好用,但问题是在这个构建脚本的最后它启动了一个通常写入终端的应用程序,但是stdout和stderr重定向似乎并没有捕获它。我不完全确定这个输出是如何打印出来的,这很复杂。
buildAndStartApp # everything outputs correctly
buildAndStartApp 2>&1 | colorize # Catches build output, but not server output
有没有办法捕获所有终端输出? "脚本"命令捕获所有内容,但我希望输出仍然打印到我的终端而不是重定向到文件。
答案 0 :(得分:1)
我发现script
有一个运行命令的-c选项,所有输出都打印到stdout以及文件。
我的命令最终成为:
script -c "buildAndStartApp" /dev/null | colorize
答案 1 :(得分:0)
首先,当您使用script
时,输出 仍会转到终端(以及重定向到文件)。您可以在第二个窗口中执行此类操作以实时查看彩色输出:
tail -f typescript | colorize
其次,如果命令的输出即使你同时重定向了stdout和stderr,那么命令可能直接写入/dev/tty
,在这种情况下类似script
使用伪终端是唯一可行的方法。