Why are the redirection operations in this command line apparently ignored by bash? I aim to redirect standard error to standard out, and then feed the whole lot into the void.
( cd ../src/ && python -m SimpleHTTPServer 8000 2>&1 > /dev/null ) &
I'm running a SimpleHTTPServer on some static web content, so that wget can check it for dead links. However, I don't want to see the errors from the server (requests for failed pages), as the wget log file provides all the information I need.
Nevertheless, when I run this...
( cd ../log/ && wget --quiet --spider --recursive -o spider.log http://localhost:8000/ 2>&1 > /dev/null )
...the original SimpleHTTPServer command running in the background carries on spewing out Standard Error reports about failed resource requests, like...
127.0.0.1 - - [28/May/2013 17:22:31] "GET /technology/actuator.html HTTP/1.1" 200 -
127.0.0.1 - - [28/May/2013 17:22:31] code 404, message File not found
First both stdout(1) and stderr(2) point to your terminal.
You then redirect stderr to whatever your stdout points to. (Which is the terminal.)
Afterwards you redirect stdout to /dev/null
. But stderr still points to the terminal.
You can do it the other way around >/dev/null 2>&1
: This way you first redirect stdout to /dev/null
and then stderr to the same.
Bash provides the shorthand &>/dev/null
for this.
Use &>/dev/null
to suppress everything.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With