Como evitar a saída do operador '&' e '' (enviar ao operador de segundo plano e ao operador de redirecionamento)

6

Eu tentei várias combinações de gedit , & , >/dev/null 2>/dev/null . Quando gedit é usado com os outros dois, sempre imprime algo no terminal.

Eu entendo que os números são pid. Mas, por favor, elucide o seguinte

  • Por que essas saídas são produzidas quando eu redireciono stdout e stderr para / dev / null, enquanto que bare gedit não imprime nada?
  • O que significa [1]+ Done ?
  • Como evitar essas saídas?
por MAKZ 26.02.2015 / 13:49

1 resposta

8
$ sleep 10 &
[1] 24446
$ 
[1]+  Done                    sleep 10

Os [1] 24446 e [1]+ Done ... são impressos pelo shell. De man bash :

When  bash starts a job asynchronously (in the background), it prints a
line that looks like:

      [1] 25647

Você pode desativar a saída Done desativando o modo monitor:

set +m

Você não pode desativar o primeiro formulário em um shell interativo, no entanto. Em vez disso, tente executar em um subshell:

$ (gedit &> /dev/null &)
$ 

se você usar isso, o processo em segundo plano não estará mais sob controle do trabalho do shell.

Uma nota lateral, &> pode ser usada para redirecionar stdout e stderr juntos.

    
por muru 26.02.2015 / 13:58