¿Por qué no funciona la redirección de E/S al eliminar trabajos en segundo plano?

¿Por qué no funciona la redirección de E/S al eliminar trabajos en segundo plano?
[~]$ kill %123

bash: kill: %123: no such job

[~]$ kill %123 2>&1 > /dev/null

bash: kill: %123: no such job

Quiero deshabilitar todos los resultados durante la eliminación de trabajos en segundo plano.

Se espera el primer resultado. Sin embargo, la segunda salida no lo es.

Como se muestra en la línea de comando, agrego 2>&1redirigir stderra stdouty uso > /dev/nullpara redirigir toda la salida a un dispositivo nulo. Pero el resultado todavía se muestra en el terminal.

¿Alguna explicación?

Gracias de antemano.

Información actualizada:

El siguiente comando funciona como se esperaba:

kill %123 > /dev/null 2>&1

Respuesta1

La redirección de salida es una propiedad del proceso. Por lo tanto, al redirigir con 2>&1 esto establece elactualsalida de stdout a stderr, que es el TTY actual, luego lo siguiente > establece la salida estándar en /dev/null, lo que deja stderr configurado en el TTY. En su información actualizada, primero configuró correctamente la salida estándar, por lo que ambas terminan siendo /dev/null.

información relacionada