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 .