59

How can I hide the screen output (printf) of a shell application in Linux?

1

5 Answers 5

82

You can redirect the output of any program so that it won't be seen.

$ program > /dev/null

This will redirect the standard output - you'll still see any errors

$ program &> /dev/null

This will redirect all output, including errors.

7
  • The first one didn't work for wget
    – Jader Dias
    Jul 17, 2009 at 3:07
  • That's cause wget uses stderr for some of it's output. The second one should work. Jul 17, 2009 at 3:08
  • 2
    Incidentally, you might want to save that wget output to a log file, so when/if your download stops working, you can figure out why. If it's in a script anyway. If this is a one-off type run, then yea, to the trash Jul 17, 2009 at 3:17
  • 1
    For wget you can use the -q options to make it quiet.
    – pkhamre
    Mar 30, 2012 at 10:12
  • Any way to suppress output written directly to /dev/tty?
    – d11wtq
    Jul 17, 2014 at 7:08
35

There are three I/O devices available on the command line.

 standard input  - 0
 standard output - 1
 standard error  - 2

To redirect standard output (the default output) to a file (and overwrite the file), use

 command > file.log

To append to file.log, use two >s

 command >> file.log

To redirect standard error to the file.log, use

 command 2> file.log

And to append

 command 2>> file.log

To combine the outputs into one stream and send them all to one place

 command > file.log 2>&1

This sends 2 (standard error) into 1 (standard output), and sends standard output to file.log

Notice that it's also possible to redirect standard input into a command that expects standard input

 command << file.txt


For more details, check out the Advanced Bash Scripting Guide.

3
  • Can somebody explain how the command > file.log 2>&1 works?
    – Cory Klein
    May 23, 2011 at 22:37
  • How low of a level would you like to know? May 29, 2011 at 13:54
  • 4
    @nomoreink: it's actually 2 commands, one is > file and the second one is 2>&1. The first one redirects the standard out to a file. The second one takes 2nd file descriptor and redirects it to first one. You can do the reverse, redirect standard output to standard error using >&2 and then redirect standard error to a file with 2> file. Nov 27, 2012 at 11:39
16

Hide standard output:

./command >/dev/null

Hide standard and error outputs:

./command >/dev/null 2>&1

Hide standard output and error outputs and release the terminal (run the command in the background):

./command >/dev/null 2>&1 &
3

If you just want to hide the output (and not save it to a file), you can use:

Edited:

$ command &> /dev/null

4
  • This will redirect the output to a file called null Jul 17, 2009 at 3:03
  • It generated a null file
    – Jader Dias
    Jul 17, 2009 at 3:04
  • 1
    you wouldn't have meant /dev/null, would you?
    – Babu
    Jul 17, 2009 at 3:09
  • 1
    Yes, I would have, Babu. I meant $ command &> /dev/null. My apologies for typing too fast for my own good.
    – Lucho
    Jul 17, 2009 at 3:13
3

For Mac OS X v10.6 (Snow Leopard):

If you need to hide the output without letting the program know it by checking the output/error file descriptor, you can try using the following in a shell:

stty flusho; command ;stty -flusho

or if you just want to hide input from the terminal by the way:

stty  -echo; command ;stty  echo

See stty(1) manual page for more information.

For Linux, all I know is that Ubuntu 10.04 (Lucid Lynx) and some Debian/Arch Linux (commented below - thanks, hendry) doesn't have the flusho setting (and I can't see anything other appropriate in the man-page). The echo setting works on the Ubuntu anyway.

2
  • My default stty under Debian/Arch does not have these options.
    – hendry
    Mar 3, 2012 at 4:46
  • I should of course have mentioned that i wasn't even on the OP's OS. Edited my post.
    – vike
    Mar 30, 2012 at 10:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.