Eu tenho vários comandos 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 fornecer dicas de áudio quando processos como suítes de testes e patches terminam).
Atualmente é invocado assim:
alert "Message for this current task" &
Bem simples.
No entanto, quando uso esse formato, recebo esta saída:
$ alert "Foobar" &
[1] 85072
$
[1] + done alert "Foobar"
$
Quero suprimir a saída do pid e da done
mensagem. Como faço isso?
Eu tentei alert "Foobar" > /dev/null &
, mas isso apenas canaliza a saída do alerta para devnull.
Eu tentei alert "Foobar" & > /dev/null
, mas isso causou coisas ruins inesperadas que não entendo completamente.
Como faço para usar &
no modo 'silencioso'?
Responder1
Você pode usar um subshell para se livrar das mensagens de controle de trabalho:
$ alias alertme="xmessage Alert!"
$ ( alertme & )
$
Se o seu comando também produzir alguma saída para STDOUT e/ou STDERR, canalize-os para /dev/null
:
$ ( alertme > /dev/null 2>&1 & )
Responder2
Uma versão um pouco mais organizada de outra resposta aqui:
(&>/dev/null alertme &)