Digamos que ejecuto un comando o script de shell y me da resultados. Sin conocer los aspectos internos de este comando o script de shell, ¿cómo se determina si la salida fue de stderr
? o stdout
?
Por ejemplo,
$ ls -ld /
drwxrwxr-t 35 root admin 1258 Dec 11 19:16 /
contra
ls -ld /test
ls: /test: No such file or directory
¿Cómo me aseguro de que el primer comando se imprimió en stdout
? y el segundo a stderr
(¿lo hizo?)?
Respuesta aceptada:
No hay forma de saberlo una vez que la salida ya se ha impreso. En este caso, tanto stdout
y stderr
están conectados a la terminal, por lo que la información sobre en qué secuencia se escribió ya se había perdido cuando apareció el texto en su terminal; el programa los combinó antes de llegar a la terminal.
Lo que puede hacer, en un caso como el anterior, sería ejecutar el comando con stdout
y stderr
redirigir a diferentes lugares y ver qué pasa. O ejecútelo dos veces, una vez con stdout
redirigido a /dev/null
y una vez con stderr
redirigido a /dev/null
y ver cuál de esos casos hace que aparezca el texto.
Puede redirigir stdout
a /dev/null
agregando >/dev/null
al final de la línea de comando, y puede redirigir stderr
a /dev/null
agregando 2>/dev/null
.