4

When I launch an application from terminal related to the window system, for example gnome or kde, then usually these applications send all sorts of junk messages in my terminal. How do I make these applications shut up?

For example if I type:

 okular somepdf.pdf & 

a window which shows the pdf file pops up and I can read the pdf next to my terminal, and when I am done I close.

Here is a typical example:

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

and when I close it sends this junk to the 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$ 

The only thing I would like to see is:

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

Perhaps that message was some bug, I do not care and I do not want to know about it.

Is it possible to suppress these messages?

Some people flagged this question as a duplicate to a question on "how to suppress output", but this is only partially what I want:

I want to automatically suppress all output of certain applications. For instance okular is a graphical application, so I will never care about what it has to say in my terminal.

So like I said above, I want the behavior to be :

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

and not something like

:~$ cd Documents
:~/Documents$ okular equi.dvi > whatever &
:~/Documents$
1

4 Answers 4

8

To suppress STDOUT:

yourcommand  1>/dev/null 

To supress STDERR

yourcommand  2>/dev/null

Since bash 4 you can suppress both:

yourcommand &>/dev/null

You could also disable KDE's debug information with kdedebugdialog tool and disable output for selected modules (or all debug output).

2

You can send the STDOUT and STDERR of the program to the dummy device /dev/null:

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

To supress the job control messages, you can disable monitor mode in bash (maybe in your .bashrc):

$ set +m

I wouldn't recommend this, though. To enable it again, use set -m.

1

If you want to suppress all text, just use the following command:

$> yourcommand >/dev/null &

If you also want to redirect stderr, you can do so like this:

$> yourcommand >/dev/null 2>&1 &
1

Use this:

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

this will send all output (error messages and regular output) to /dev/null.

Not the answer you're looking for? Browse other questions tagged .