[~]$ 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>&1
redirigir stderr
a stdout
y uso > /dev/null
para 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.