Hiding output of a command

To hide the output of any command usually the stdout and stderr are redirected to /dev/null.

command > /dev/null 2>&1

Explanation:

1.command > /dev/null: redirects the output of command(stdout) to /dev/null
2.2>&1: redirects stderr to stdout, so errors (if any) also goes to /dev/null

Note

&>/dev/null: redirects both stdout and stderr to /dev/null. one can use it as an alternate of /dev/null 2>&1

Silent grep: grep -q "string" match the string silently or quietly without anything to standard output. It also can be used to hide the output.

In your case, you can use it like,

if dpkg -s net-tools > /dev/null 2>&1; then
    if  netstat -tlpn | grep 8080 | grep java > /dev/null 2>&1; then
    #rest thing
else
    echo "your message"
fi

Here the if conditions will be checked as it was before but there will not be any output.

Reply to the comment:

netstat -tlpn | grep 8080 | grep java > /dev/null 2>&1: It is redirecting the output raised from grep java after the second pipe. But the message you are getting from netstat -tlpn. The solution is use second if as,

if  [[ `netstat -tlpn | grep 8080 | grep java` ]] &>/dev/null; then

lsof -i :<portnumnber> should be able to do something along the lines of what you want.

Tags:

Bash

Scripts