linux - easytag - La redirección de salida no funciona para un programa determinado
bash redirect (3)
En función de su nivel, parece que el programa está probando si stdin y / stdout es un tty. Nunca lo he usado, pero podrías intentar usar empty.sourceforge.net. Se supone que debe crear un pseudo-tty que debería engañar al cheque de su programa.
En Linux, estoy tratando de redirigir stdout desde una aplicación de consola a un archivo en lugar de una consola. No tengo el código fuente. Intenté varios métodos, pero todos dieron como resultado un archivo vacío. Sin redirección de salida, todo funciona bien (veo los mensajes de la consola).
Lo intenté, por ejemplo:
progname > out.txt
progname > out.txt 2&>1
Y nada aparece en out.txt y en la consola.
Traté de ejecutar la aplicación con strace. Cuando no uso la redirección, veo líneas como:
write(1, "bla bla", 8)
Cuando introduzco la redirección de salida, no hay llamadas de escritura, lo que me hace pensar que la aplicación está probando algo antes de escribir el mensaje. ¿Qué está buscando la aplicación? ¿Cómo puedo eludirlo?
Estoy usando CentOS 5.5 y Bash.
Intente redirigir una sola secuencia a la vez a / dev / null, para ver en cuál imprime:
progname > /dev/null
progname 2> /dev/null
Luego verás qué transmisión debes capturar. Por razones técnicas, algunos programas imprimen incluso mensajes informativos en stdout.
progname > out.txt 2>&1
Editar : si realmente hiciste esto y fue un error tipográfico en tu pregunta. Es posible que la aplicación compruebe si el resultado es un TTY.
Edit2: Ok, en ese caso, prueba script -qc progname > out.txt > 2>&1
En Debian / Ubuntu, el script
es una parte del paquete bsdutils
que es un paquete esencial y siempre está instalado.