输出重定向不适用于某个程序

ksh*_*har 8 linux bash redirect stdout output-redirect

在Linux上,我正在尝试将stdout从控制台应用程序重定向到文件而不是控制台.我没有源代码.我尝试了几种方法,但都导致了一个空文件.没有输出重定向一切正常(我看到控制台消息).

我试过,例如:

progname > out.txt
progname > out.txt 2&>1
Run Code Online (Sandbox Code Playgroud)

并没有出现在out.txt和控制台中.

我试着用strace运行应用程序.当我不使用重定向时,我看到如下的行 -

write(1, "bla bla", 8)
Run Code Online (Sandbox Code Playgroud)

当我引入输出重定向时,根本就没有写入调用,这使我认为应用程序在编写消息之前正在测试某些内容.应用程序在寻找什么?我怎么能绕过它呢?

我正在使用CentOS 5.5和Bash.

plu*_*dra 9

progname > out.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

编辑:如果你真的这样做,这是你的问题中的拼写错误.应用程序可能会检查输出是否为TTY.

Edit2:好的,在这种情况下,试试吧script -qc progname > out.txt > 2>&1

在Debian/Ubuntu中,script是一个bsdutils包的一部分,它是一个Essential包并且总是安装.


Lau*_*ves 7

基于你的strace,听起来像程序正在测试stdin和/我们的stdout是否是tty.我从来没有使用它,但你可以尝试使用empty.sourceforge.net.它假设创建一个伪tty,它应该欺骗你的程序检查.