OS X: equivalente ao wget do Linux

500

Como faço para obter um HTTP GET a partir de um script de shell Un * x em um sistema OS X padrão? (a instalação de software de terceiros não é uma opção, pois isso deve ser executado em muitos sistemas diferentes sobre os quais eu não tenho controle).

Por exemplo, se eu iniciar o servidor Mercurial localmente, fazendo um hg serve :

... $ hg serve 

E então, de um Linux que possui o comando wget, eu faço um 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 no terminal em que lancei o comando "hg serve" , posso realmente ver que um HTTP GET chegou:

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

Portanto, no Linux, uma maneira de executar um HTTP GET a partir de um script shell é usar o wget (se esse comando estiver instalado, é claro).

Que outras maneiras existem para fazer o equivalente a um wget ? Estou procurando, em particular, algo que funcione nas instalações de estoque do OS X.

SintaxeT3rr0r
fonte

Respostas:

712

Eu vou ter que dizer curl http://127.0.0.1:8000 -o outfile

SiegeX
fonte
27
Além disso, o wget está disponível no MacPorts e no Fink .
precisa
47
Eu vim aqui de uma pesquisa no Google sobre como obter o wget no Mac, portanto, apesar do requisito do OP de evitar a instalação de software de terceiros, fornecerei um link para um guia rápido que encontrei sobre como instalar o wget sem usar o MacPorts no futuro referência.
Eirik H
32
Também está disponível no Homebrew.
Daniel diz Restabelecer Monica
2
Não parece seguir adiante.
Nrose
14
Para baixar arquivos, você pode usar -Oou --remote-namesinalizar para renomear automaticamente o arquivo baixado. por exemplocurl -O http://somehost.org/file.zip
nimcap 22/02
463

brew install wget

O Homebrew é um gerenciador de pacotes para o OSX análogo ao yum, apt-get, choco, emerge, etc. Esteja ciente de que você também precisará instalar o Xcode e as Ferramentas de Linha de Comando. Praticamente qualquer pessoa que use a linha de comando no OSX desejará instalar essas coisas de qualquer maneira.

Se você não pode ou não deseja usar o homebrew, também pode:

Instale o 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

Ou use um alias do bash:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'
Eric Hartford
fonte
11
Você pode levar um momento para explicar o homebrew, mas é importante que haja uma wgetresposta visível para iniciantes aqui, já que a única outra foi excluída por seu proprietário e curlé uma alternativa e não um equivalente literal.
Chris Stratton
2
Obrigado, isso foi útil para mim como alguém com o brew já instalado.
Enderland
4
@ Michaelangelo E esse não é seu trabalho de vandalizar as postagens de outras pessoas. Você não deve editar outras respostas para expressar seus próprios pontos - isso é inapropriado. De fato, as ações estão sendo discutidas no Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212 1/16/16
2
@EricHartford A votação antecipada não resolve o problema. Ele forneceu uma alternativa, sem listar a outra opção de como instalar manualmente o wget.
Michaelangel007
1
Eu acho que você tem um bom argumento. E vou editar a resposta para incorporar suas idéias.
Eric Hartford
87

A ondulação tem um modo quase equivalente ao wget padrão.

curl -O <url>

Isso funciona como

wget <url>

E, se quiser, você pode adicionar isso ao seu .bashrc:

alias wget='curl -O'

Não é 100% compatível, mas funciona para o uso mais comum do wget (IMO)

Ed Henderson
fonte
2
como você se recursiva com isso?
Jasper
Você pode usar o bash para adicionar isso a um loop como este: for i in `seq 1 <n>` do curl -O <url>;done;onde <n> é o número de vezes que você deseja iterar e <url> é o URL a ser puxado.
Blairg23
1
Às vezes, você precisará adicionar a -Lbandeira para seguir os redirecionamentos de local. Você pode usar curl -OL <url>para fazer isso.
Gustavo Straube
1
-Otambém se aplica apenas ao próximo argumento; portanto, para baixar vários URLs, é necessário usar algo como curl -O "$url1" -O "$url2"ou printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
Nisetama
É uma ótima dica legal. Muito obrigado!
Cmcromance
42

1) no seu tipo mac

nano /usr/bin/wget

2) cole o seguinte em

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

3) feche e torne-o executável

chmod 777 /usr/bin/wget

É isso aí.

Eamon Straughn
fonte
Melhor que um apelido.
MK
3
Quase correto. Eu acredito que o primeiro passo deveria ser vim /usr/bin/wget;) haha ​​só brincando. obrigado pela resposta - isso nunca me ocorreu e, por algum motivo, não me apetece instalar o brew / fink / o que quer que seja, então parabéns pela resposta fácil e portátil.
Kasapo 2/04
3
-Lé importante para lidar com 301respostas http . O wget lida com eles por padrão.
Donn Lee
"curl -L resource.url / tar.tar.gz -O tar.tar.gz" funcionou bem, obrigado por esta única solução viável entre outras neste segmento para o meu caso de uso.
27678 Olksii Kyslytsyn #
sudo nano / usr / bin / wget
Vino
18

Use curl;

curl http://127.0.0.1:8000 -o index.html
ismail
fonte
12

Aqui está o equivalente do Mac OS X ao wget do Linux.

Para Linux, por exemplo, Ubuntu em uma instância da AWS, use:

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

Em um Mac, ou seja, para desenvolvimento local, use o seguinte:

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

O parâmetro -o é necessário em um Mac para gerar um arquivo em vez de na tela. Especifique um nome de destino diferente para renomear o arquivo baixado.

Use capital -O para renomear com wget. Minúsculas -o especificará o arquivo de saída para o log de transferência.

Oliver Schafeld
fonte
5

Você pode criar o wget na máquina mac ou usar o MacPorts para instalá-lo diretamente.

sudo port install wget 

Isso funcionaria como um encanto, também você pode atualizar para a versão mais recente assim que estiver disponível. O porto é muito mais estável que o brew, embora tenha muito menos número de fórmulas e portos.

Você pode instalar o MacPorts a partir do https://www.macports.org/install.phpdownload .pkge instalá-lo.

Hammad Haleem
fonte
e como você instala a porta?
Roy Lovejoy
5

Em vez de usar o equivalente, você pode tentar "brew install wget" e usar o wget.

Você precisa ter o brew instalado no seu mac.

Jaya Konduru
fonte
1
Não vou votar, mas este é um engano da resposta de Eric 13 de junho de 13.
MarkHu 14/09
4

Você poderia usar em seu curllugar. Ele é instalado por padrão no /usr/bin.

James Sumners
fonte
2

wget Binário pré-compilado para Mac

Para aqueles que procuram uma instalação rápida do wget no Mac, confira o binário pré-compilado de Quentin Stafford-Fraser aqui, que existe há mais de uma década:

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

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

Não criar / instalar / port / brew / curl junk. Basta baixar, instalar e executar. Funciona com o Mac OS X 10.3-10.12 +.

Beejor
fonte