Como suprimir mensagens geradas por um aplicativo sendo enviado para minha janela de terminal? [duplicado]

3

Quando eu lanço um aplicativo do terminal relacionado ao sistema de janelas, por exemplo gnome ou kde, geralmente esses aplicativos enviam todos os tipos de mensagens indesejadas no meu terminal. Como eu faço esses aplicativos calarem a boca?

Por exemplo, se eu digitar:

 okular somepdf.pdf & 

uma janela que mostra o arquivo pdf aparece e eu posso ler o pdf ao lado do meu terminal, e quando eu terminar eu fecho.

Aqui está um exemplo típico:

:~$ cd Documents
:~/Documents$ okular equi.dvi &
[1] 5823

e quando eu fechar ele envia esse lixo para o terminal:

:~/Documents$ okular(5823)/kdeui (kdelibs) KXMLGUIClient::~KXMLGUIClient: 0x2322528 deleted without having been removed from the factory first. This will leak standalone popupmenus and could lead to crashes. 
d

d: command not found
[1]+  Done                    okular equi.dvi
[1]+  Done                    okular equi.dvi
:~/Documents$ 

A única coisa que gostaria de ver é:

:~$ cd Documents
:~/Documents$ okular equi.dvi &
:~/Documents$

Talvez essa mensagem seja um bug, eu não ligo e não quero saber disso.

É possível suprimir essas mensagens?

    
por mnr 03.03.2012 / 18:59

4 respostas

6

Para suprimir STDOUT:

yourcommand  1>/dev/null 

Para suprimir o STDERR

yourcommand  2>/dev/null

Desde o bash 4 você pode suprimir ambos:

yourcommand &>/dev/null

Você também pode desabilitar as informações de depuração do KDE com a ferramenta kdedebugdialog e desativar a saída para os módulos selecionados (ou todas as saídas de depuração).

    
por 03.03.2012 / 19:07
2

Você pode enviar o STDOUT e o STDERR do programa para o dispositivo fictício /dev/null :

$ okular equi.dvi &> /dev/null &

Para suprimir as mensagens de controle de trabalho, você pode desativar o modo monitor no bash (talvez em seu .bashrc ):

$ set +m

Eu não recomendaria isso, no entanto. Para ativá-lo novamente, use set -m .

    
por 03.03.2012 / 19:00
1

Se você quiser suprimir todo o texto, use o seguinte comando:

$> yourcommand >/dev/null &

Se você também quiser redirecionar o stderr, você pode fazer assim:

$> yourcommand >/dev/null 2>&1 &
    
por 03.03.2012 / 19:01
1

Use isto:

okular equi.dvi > /dev/null 2>&1 & 

isto irá enviar toda a saída (mensagens de erro e saída regular) para /dev/null .

    
por 03.03.2012 / 19:02

Tags