OS X: equivalent of Linux's wget

MacosShellUnixHttp Get

Macos Problem Overview


How can I do an HTTP GET from a Un*x shell script on a stock OS X system? (installing third-party software is not an option, for this has to run on a lot of different systems which I don't have control on).

For example if I start the Mercurial server locally doing a hg serve:

... $ hg serve 

And then, from a Linux that has the wget command I do a wget:

... $  wget http://127.0.0.1:8000
--2010-12-31 22:18:25--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... 200 Script output follows
Length: unspecified [text/html]
Saving to: `index.html

And on the terminal in which I launched the "hg serve" command, I can indeed see that an HTTP GET made its way:

127.0.0.1 - - [30/Dec/2010 22:18:17] "GET / HTTP/1.0" 200 -

So on Linux one way to do an HTTP GET from a shell script is to use wget (if that command is installed of course).

What other ways are there to do the equivalent of a wget? I'm looking, in particular, for something that would work on stock OS X installs.

Macos Solutions


Solution 1 - Macos

I'm going to have to say curl http://127.0.0.1:8000 -o outfile

Solution 2 - Macos

brew install wget

Homebrew is a package manager for OSX analogous to yum, apt-get, choco, emerge, etc. Be aware that you will also need to install Xcode and the Command Line Tools. Virtually anyone who uses the command line in OSX will want to install these things anyway.

If you can't or don't want to use homebrew, you could also:

Install wget manually:

curl -# "http://ftp.gnu.org/gnu/wget/wget-1.17.1.tar.xz" -o "wget.tar.xz"
tar xf wget.tar.xz
cd wget-1.17.1
./configure --with-ssl=openssl -with-libssl-prefix=/usr/local/ssl && make -j8 && make install

Or, use a bash alias:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'

Solution 3 - Macos

Curl has a mode that is almost equivalent to the default wget.

curl -O <url>

This works just like

wget <url>

And, if you like, you can add this to your .bashrc:

alias wget='curl -O'

It's not 100% compatible, but it works for the most common wget usage (IMO)

Solution 4 - Macos

  1. on your mac type

    nano /usr/bin/wget

  2. paste the following in

    #!/bin/bash curl -L $1 -o $2

  3. close then make it executable

    chmod 777 /usr/bin/wget

That's it.

Solution 5 - Macos

Use curl;

curl http://127.0.0.1:8000 -o index.html

Solution 6 - Macos

Here's the Mac OS X equivalent of Linux's wget.

For Linux, for instance Ubuntu on an AWS instance, use:

wget http://example.com/textfile.txt

On a Mac, i.e. for local development, use this:

curl http://example.com/textfile.txt -o textfile.txt

The -o parameter is required on a Mac for output into a file instead of on screen. Specify a different target name for renaming the downloaded file.

Use capital -O for renaming with wget. Lowercase -o will specify output file for transfer log.

Solution 7 - Macos

You can either build wget on the mac machine or use MacPorts to install it directly.

sudo port install wget 

This would work like a charm, also you can update to the latest version as soon as it's available. Port is much more stable than brew, although has a lot less number of formula and ports.

You can install MacPorts from https://www.macports.org/install.php you can download the .pkg file and install it.

Solution 8 - Macos

Instead of going with equivalent, you can try "brew install wget" and use wget.

You need to have brew installed in your mac.

Solution 9 - Macos

You could use curl instead. It is installed by default into /usr/bin.

Solution 10 - Macos

wget Precompiled Mac Binary

For those looking for a quick wget install on Mac, check out Quentin Stafford-Fraser's precompiled binary here, which has been around for over a decade:

https://statusq.org/archives/2008/07/30/1954/<br/><br/> MD5 for 2008 wget.zip: 24a35d499704eecedd09e0dd52175582
MD5 for 2005 wget.zip: c7b48ec3ff929d9bd28ddb87e1a76ffb

No make/install/port/brew/curl junk. Just download, install, and run. Works with Mac OS X 10.3-10.12+.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSyntaxT3rr0rView Question on Stackoverflow
Solution 1 - MacosSiegeXView Answer on Stackoverflow
Solution 2 - MacosEric HartfordView Answer on Stackoverflow
Solution 3 - MacosEd HendersonView Answer on Stackoverflow
Solution 4 - MacosEamon StraughnView Answer on Stackoverflow
Solution 5 - MacosismailView Answer on Stackoverflow
Solution 6 - MacosOliver SchafeldView Answer on Stackoverflow
Solution 7 - MacosHammad HaleemView Answer on Stackoverflow
Solution 8 - MacosJaya KonduruView Answer on Stackoverflow
Solution 9 - MacosJames SumnersView Answer on Stackoverflow
Solution 10 - MacosBeejorView Answer on Stackoverflow