Ocultar toda a saída de um processo em segundo plano

2

Eu tenho um monte de comandos no meu zshrc , que invocam outro comando em segundo plano. O comando background é um alias para um programa de conversão de texto em fala (eu o uso para me dar sugestões de áudio quando processos como suítes de testes e patches terminam).

Atualmente, ele é chamado assim:

alert "Message for this current task" &

Muito simples.

No entanto, quando eu uso este formato, recebo esta saída:

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

Eu quero suprimir a saída do pid e a mensagem done . Como eu faço isso?

Eu tentei alert "Foobar" > /dev/null & , mas isso só canaliza a saída do alerta para desvnull.

Eu tentei alert "Foobar" & > /dev/null , mas fiz coisas ruins inesperadas que não entendi completamente.

Como uso o & no modo 'silencioso'?

    
por asfallows 13.08.2014 / 18:22

2 respostas

1

Você pode usar um subshell para se livrar das mensagens de controle de trabalho:

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

Se o seu commad também produzir alguma saída para STDOUT e / ou STDERR, canalize-os para /dev/null :

$ ( alertme > /dev/null 2>&1 & )
    
por 13.08.2014 / 19:28
0

Uma versão ligeiramente mais clara de outra resposta aqui:

(&>/dev/null alertme &)
    
por 27.06.2018 / 13:12

Tags