Bash:
Escribiendo en el error estándar
Cómo hacerlo:
En Bash, se utiliza >&2
para redirigir la salida hacia stderr. Aquí hay un ejemplo básico:
echo "Este es un mensaje normal"
echo "Este es un mensaje de error" >&2
Ejecutar este script mostrará ambos mensajes en la consola, pero si los rediriges, puedes separar el stdout del stderr. Por ejemplo:
bash script.sh > output.txt 2> error.txt
output.txt
contendrá "Este es un mensaje normal"
, mientras que error.txt
capturará "Este es un mensaje de error"
.
Para un caso de uso práctico, considera un script que procesa archivos e informa un error si un archivo no existe:
filename="ejemplo.txt"
if [ ! -f "$filename" ]; then
echo "$filename no existe!" >&2
exit 1
else
echo "Procesando $filename"
fi
Salida de muestra directamente en la consola cuando ejemplo.txt
no existe:
ejemplo.txt no existe!
No hay bibliotecas de terceros directas en Bash para manejar stderr, ya que la redirección cuenta con soporte nativo y generalmente es suficiente. Sin embargo, para aplicaciones complejas, se pueden incorporar marcos de registro o herramientas de registro externas como syslog
o log4bash
para gestionar tanto stdout como stderr de manera más efectiva.