OS X: equivalente della wget di Linux


501

Come posso fare un HTTP GET da uno script shell Un * x su un sistema OS X stock? (l'installazione di software di terze parti non è un'opzione, poiché deve funzionare su molti sistemi diversi sui quali non ho il controllo).

Ad esempio, se avvio il server Mercurial localmente facendo un servizio hg :

... $ hg serve 

E poi, da un Linux che ha il comando wget, faccio un 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

E sul terminale in cui ho lanciato il comando "hg serve" , posso davvero vedere che un HTTP GET si è fatto strada:

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

Quindi su Linux un modo per fare un HTTP GET da uno script di shell è usare wget (se quel comando è installato ovviamente).

Quali altri modi ci sono per fare l'equivalente di una wget ? Sto cercando, in particolare, qualcosa che possa funzionare su installazioni OS X di serie.


Risposte:


713

Devo dire curl http://127.0.0.1:8000 -o outfile


27
Inoltre, wget è disponibile tramite MacPorts e Fink .
Brian Clapper,

47
Sono venuto qui da una ricerca di Google su come ottenere wget su Mac, quindi nonostante l'obbligo del PO di evitare l'installazione di software di terze parti, fornirò un link a una guida rapida che ho trovato su come installare wget senza utilizzare MacPorts per il futuro riferimento.
Eirik H,

32
È disponibile anche su Homebrew.
Daniel dice di reintegrare Monica il

2
Non sembra seguire in avanti.
Annullato il

14
Per scaricare file è possibile utilizzare -Oo --remote-namecontrassegnare per rinominare automaticamente il file scaricato. ad es.curl -O http://somehost.org/file.zip
nimcap,

463

brew install wget

Homebrew è un gestore di pacchetti per OSX analogo a yum, apt-get, choco, emerge, ecc. Tieni presente che dovrai anche installare Xcode e gli strumenti da riga di comando. Praticamente chiunque usi la riga di comando in OSX vorrà comunque installare queste cose.

Se non puoi o non vuoi usare l'homebrew, puoi anche:

Installa wget manualmente:

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

Oppure usa un alias bash:

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

11
Potresti dedicare un momento a spiegare l'homebrew, ma è importante che qui ci sia una wgetrisposta visibile per i principianti poiché l'unica altra è stata eliminata dal suo proprietario ed curlè un'alternativa piuttosto che un equivalente letterale.
Chris Stratton,

2
Grazie, questo mi è stato utile come persona con birra già installata.
Enderland,

4
@Michaelangelo E non è il tuo lavoro vandalizzare i post degli altri. Non dovresti modificare altre risposte per esprimere i tuoi punti: è inappropriato. In effetti, le azioni sono in discussione su Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212,

2
@EricHartford Il voto negativo non risolve il problema. Ha fornito un'alternativa, senza elencare l' altra possibilità di come installare manualmente wget.
Michaelangel007,

1
Penso che tu abbia un buon punto. E modificherò la risposta per incorporare le tue idee.
Eric Hartford,

87

Curl ha una modalità che è quasi equivalente alla wget predefinita.

curl -O <url>

Funziona proprio come

wget <url>

E, se lo desideri, puoi aggiungerlo al tuo .bashrc:

alias wget='curl -O'

Non è compatibile al 100%, ma funziona per l'utilizzo di wget (IMO) più comune


2
come fai ricorsivo con questo?
Jasper,

Puoi usare bash per aggiungere questo in un ciclo come questo: for i in `seq 1 <n>` do curl -O <url>;done;dove <n> è il numero di volte che vuoi iterare e <url> è l'URL da estrarre.
Blairg23,

1
A volte dovrai aggiungere la -Lbandiera per seguire i reindirizzamenti della posizione. Puoi usarlo curl -OL <url>per farlo.
Gustavo Straube,

1
-Ovale anche solo per l'argomento successivo, quindi per scaricare più URL devi usare qualcosa come curl -O "$url1" -O "$url2"o printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama,

È un ottimo suggerimento. Grazie mille!
cmcromance

42

1) sul tuo tipo di mac

nano /usr/bin/wget

2) incolla quanto segue

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

3) chiudere quindi renderlo eseguibile

chmod 777 /usr/bin/wget

Questo è tutto.


Meglio di un alias.
MK

3
Quasi corretto Credo che il primo passo dovrebbe essere vim /usr/bin/wgetperò;) ahah sto solo scherzando. grazie per la risposta - questo non mi è mai venuto in mente e per qualche ragione non ho voglia di installare brew / fink / qualunque cosa, quindi complimenti per la facile risposta portatile.
Kasapo,

3
-Lè importante per la gestione delle 301risposte http . wget li gestisce di default.
Donn Lee,

"curl -L resource.url / tar.tar.gz -O tar.tar.gz" ha funzionato bene, grazie per questa unica soluzione praticabile tra l'altro in questo thread per il mio caso d'uso.
Oleksii Kyslytsyn l'

sudo nano / usr / bin / wget
Vino

18

Utilizzare curl;

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

12

Ecco l'equivalente per Mac OS X della wget di Linux.

Per Linux, ad esempio Ubuntu su un'istanza AWS, utilizzare:

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

Su un Mac, ovvero per lo sviluppo locale, utilizzare questo:

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

Il parametro -o è richiesto su un Mac per l'output in un file anziché sullo schermo. Specificare un nome di destinazione diverso per rinominare il file scaricato.

Usa capital -O per rinominare con wget. Minuscolo -o specificherà il file di output per il registro di trasferimento.


5

Puoi creare wget sul computer Mac o utilizzare MacPorts per installarlo direttamente.

sudo port install wget 

Funzionerebbe come un incantesimo, inoltre puoi aggiornare all'ultima versione non appena è disponibile. La porta è molto più stabile della birra, sebbene abbia un numero molto minore di formula e porte.

Puoi installare MacPorts da https://www.macports.org/install.phpcui puoi scaricare il .pkgfile e installarlo.


e come si installa la porta?
Roy Lovejoy,

5

Invece di andare con equivalente, puoi provare "brew install wget" e usare wget.

Devi aver installato brew sul tuo mac.


1
Non declasseremo, ma si tratta di un inganno della risposta di Eric del 13 giugno 1313.
MarkHu,


2

wget Binario Mac precompilato

Per coloro che cercano una rapida installazione di wget su Mac, dai un'occhiata al binario precompilato di Quentin Stafford-Fraser qui, che esiste da oltre un decennio:

https://statusq.org/archives/2008/07/30/1954/

MD5 per 2008 wget.zip: 24a35d499704eecedd09e0dd52175582
MD5 per 2005 wget.zip: c7b48ec3ff929d9bd28ddb87e1a76ffb

Nessun junk make / install / port / brew / curl. Basta scaricare, installare ed eseguire. Funziona con Mac OS X 10.3-10.12 +.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.