En sistemas operativos similares a Unix, como Linux, macOS X y BSD, stderr está definido por el estándar POSIX. Su número de descriptor de archivo predeterminado es 2 .
En el terminal, el error estándar se establece por defecto en la pantalla del usuario.
Stderr en la línea de comandos de Linux
En bash, el error estándar se puede redirigir en la línea de comando. La redirección de stderr puede ser útil si necesita capturar cualquier mensaje de error en un archivo de registro independiente u ocultar los mensajes de error por completo.
Por ejemplo, considere el siguiente comando de búsqueda :
encontrar / -iname '* algo *'
/ usr / share / doc / something / usr / share / doc / something / examples / something_random find: `/ run / udisks2 ': Permiso denegado encuentre:` / run / wpa_supplicant': Permiso denegado / usr / share / something / usr / juegos / algo
Estamos recibiendo errores porque buscar está intentando buscar en algunos directorios del sistema que no tenemos permiso para leer. Las líneas que dicen "Permiso denegado" son mensajes de error y se escribieron en stderr . Las otras líneas fueron escritas a stdout (salida estándar). Por defecto, ambos se muestran en el terminal.
Para ocultar stderr, podemos redirigirlos haciendo referencia al número de descriptor de archivo del error estándar, 2, y a un operador de "salida de redirección", > .
encuentra / -iname '* algo *' 2> / dev / null
/ usr / share / doc / something / usr / share / doc / something / examples / something_random / usr / share / something / usr / games / something
Los errores ya no se muestran, porque toda la salida a stderr se redirigió a / dev / null, el dispositivo especial en Linux que "no va a ninguna parte".
También podríamos redirigir todos los errores a un archivo:
encuentra / -iname '* algo *' 2> output.txt
/ usr / share / doc / something / usr / share / doc / something / examples / something_random / usr / share / something / usr / games / something
Ahora, si controla el contenido de output.txt, verá que los mensajes de error se guardaron allí:
cat output.txt
find: `/ run / udisks2 ': permiso denegado find:` / run / wpa_supplicant': permiso denegado
Para obtener información detallada sobre cómo redirigir las secuencias de datos, consulte la redirección en bash.
Mensaje de error, términos del sistema operativo