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.
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包并且总是安装.
基于你的strace,听起来像程序正在测试stdin和/我们的stdout是否是tty.我从来没有使用它,但你可以尝试使用empty.sourceforge.net.它假设创建一个伪tty,它应该欺骗你的程序检查.