Ocultar todos los resultados de un proceso en segundo plano

Ocultar todos los resultados de un proceso en segundo plano

Tengo un montón de comandos zshrcque invocan otro comando en segundo plano. El comando en segundo plano es un alias de un programa de conversión de texto a voz (lo uso para darme señales de audio cuando finalizan procesos como conjuntos de pruebas y parches).

Actualmente se invoca así:

alert "Message for this current task" &

Bastante simple.

Sin embargo, cuando uso este formato, obtengo este resultado:

$ alert "Foobar" &
[1] 85072
$
[1]  + done       alert "Foobar"
$

Quiero suprimir la salida del pid y el donemensaje. ¿Cómo puedo hacer eso?

Lo intenté alert "Foobar" > /dev/null &pero eso solo canaliza la salida de alerta a devnull.

Lo intenté alert "Foobar" & > /dev/nullpero eso hizo cosas malas inesperadas que no entiendo del todo.

¿Cómo lo uso &en modo 'silencioso'?

Respuesta1

Puede utilizar un subshell para deshacerse de los mensajes de control del trabajo:

$ alias alertme="xmessage Alert!"
$ ( alertme & )
$

Si su comando también produce algunos resultados a STDOUT y/o STDERR, canalícelos a /dev/null:

$ ( alertme > /dev/null 2>&1 & )

Respuesta2

Una versión un poco más clara de otra respuesta aquí:

(&>/dev/null alertme &)

información relacionada