Search code examples
bashshellscriptingecho

How can I suppress all output from a command using Bash?


I have a Bash script that runs a program with parameters. That program outputs some status (doing this, doing that...). There isn't any option for this program to be quiet. How can I prevent the script from displaying anything?

I am looking for something like Windows' "echo off".


Solution

  • The following sends standard output to the null device (bit bucket).

    scriptname >/dev/null
    

    And if you also want error messages to be sent there, use one of (the first may not work in all shells):

    scriptname &>/dev/null
    scriptname >/dev/null 2>&1
    scriptname >/dev/null 2>/dev/null
    

    And, if you want to record the messages, but not see them, replace /dev/null with an actual file, such as:

    scriptname &>scriptname.out
    

    For completeness, under Windows cmd.exe (where "nul" is the equivalent of "/dev/null"), it is:

    scriptname >nul 2>nul