259

I have a crontab that wgets a PHP page every five minutes (just to run some the PHP code), and I want to send the output of the request to standard out, while sending the normal wget output to /dev/null (or otherwise hide it). I couldn't find it in the wget manual.

I'm looking for something like:

wget -o stdout http://whatever.com/page.php > /dev/null

Anyone know?

5
  • 6
    Mistitled, should be "How do you redirect wget to null?".
    – Bob Stein
    Dec 30, 2014 at 13:47
  • 3
    @BobStein-VisiBone I think it is titled correctly. I wanted the thing that is wget-ed to go to a stdout, and the normal stdout to go to null (i.e. ignore what it usually prints, and instead print the response body). Dec 31, 2014 at 1:24
  • 6
    Oh! I stand corrected. I have started using wget http://example.com/page.php -qO- (That's a capital Oh.) That standard-outputs ONLY the response body. Is that what you wanted?
    – Bob Stein
    Dec 31, 2014 at 4:32
  • In case it helps someone (as per how I landed here), On a terminal of an AWS Cloud9 its wget -O - 169.254.169.254/latest/meta-data/public-hostname -q which gets me the public DNS (as doing web dev)
    – KevinY
    Jan 14, 2021 at 20:43
  • Dealing with ampersands, etc. in the URL (e.g. https://superuser.com/questions?tab=newest&page=542&pagesize=50): See e.g. How can I download weblinks using wget which do not end with .html? Feb 1, 2021 at 14:44

5 Answers 5

266

wget -O - http://whatever.com/page.php > /dev/null

or, if you want to redirect standard error output also:

wget -O - http://whatever.com/page.php > /dev/null 2>&1

or, for codegolf :-)

wget -O-

7
  • 27
    You may want to add -nv to avoid the progress indicator overwriting the output. Nov 10, 2015 at 15:25
  • 1
    This approach has a problem - if response status is not 200, it doesn't print body. Any thoughts to resolve it?
    – Imaskar
    Aug 13, 2018 at 9:24
  • 1
    See answer from Martin Wang - you need to add -q to actually see the output. Mar 3, 2020 at 12:03
  • 1
    I want to output IP address from website so i just put wget -q -O - https://api.ipify.org and it's output it to the shell .
    – Salem F
    Aug 21, 2020 at 18:34
  • 1
    This redirects all output to /dev/null: wget -O - whatever.com/page.php > /dev/null You want the following (to redirect stderror only): wget -O - whatever.com/page.php 2> /dev/null
    – NeoH4x0r
    Jan 18 at 21:48
194

A simpler version

wget -qO- http://example.com

equivalent to

wget -q -O - http://example.com

where

  • -q turns off the output of log, including error information
  • -O -, equivlalent to -O /dev/stdout, means dump the web page to a file named /dev/stdout.
1
  • 4
    The first one works with BusyBox's wget, which is very helpful. I don't think it likes having a space after the O
    – zymhan
    Jul 19, 2019 at 15:10
20
wget -qO /dev/null http://whatever.com/page.php
  • -q to make it quiet
  • -O /dev/null to ignore the page contents
0
11

You can also try:

wget -q -O - http://whatever.com/page.php > /dev/null 

the -q will make it "quiet"

Or have the file go to some temp html page that you don't mind having. whatever.com/tempFile.html

4
wget -O /dev/null http://example.com/
3
  • It works on my mac with wget 1.12.
    – Simon
    Aug 9, 2011 at 22:29
  • 1
    Could you provide some explanation about what your code does? Nov 5, 2011 at 1:14
  • -O means "write output to this file" Nov 14, 2017 at 23:57

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.