OS X: equivalente al wget de Linux

501

¿Cómo puedo hacer un HTTP GET desde un script de shell Un * x en un sistema OS X estándar? (instalar software de terceros no es una opción, ya que esto tiene que ejecutarse en muchos sistemas diferentes sobre los que no tengo control).

Por ejemplo, si inicio el servidor Mercurial localmente haciendo un hg serve :

... $ hg serve 

Y luego, desde un Linux que tiene el comando wget , hago 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

Y en el terminal en el que lancé el comando "hg serve" , puedo ver que un HTTP GET se abrió paso:

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

Entonces, en Linux, una forma de hacer un HTTP GET desde un script de shell es usar wget (si ese comando está instalado, por supuesto).

¿Qué otras formas hay para hacer el equivalente de un wget ? Estoy buscando, en particular, algo que funcione en las instalaciones estándar de OS X.

Sintaxis T3rr0r
fuente

Respuestas:

713

Voy a tener que decir curl http://127.0.0.1:8000 -o outfile

SiegeX
fuente
27
Además, wget está disponible a través de MacPorts y Fink .
Brian Clapper
47
Vine de una búsqueda de Google sobre cómo obtener wget en Mac, así que a pesar de los requisitos del OP para evitar la instalación de software de terceros, proporcionaré un enlace a una guía rápida que encontré sobre cómo instalar wget sin usar MacPorts para el futuro referencia.
Eirik H
32
También está disponible en Homebrew.
Daniel dice reinstalar a Mónica el
2
No parece seguir adelante.
nroose
14
Para descargar archivos, puede usar -Oo --remote-namemarcar para cambiar automáticamente el nombre del archivo descargado. por ejemplocurl -O http://somehost.org/file.zip
nimcap
463

brew install wget

Homebrew es un administrador de paquetes para OSX análogo a yum, apt-get, choco, emerge, etc. Tenga en cuenta que también necesitará instalar Xcode y las herramientas de línea de comandos. Prácticamente cualquier persona que use la línea de comandos en OSX querrá instalar estas cosas de todos modos.

Si no puede o no quiere usar homebrew, también podría:

Instale 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

O use un alias bash:

function _wget() { curl "${1}" -o $(basename "${1}") ; };
alias wget='_wget'
Eric Hartford
fuente
11
Puede tomarse un momento para explicar homebrew, pero es importante que haya una wgetrespuesta visible para los novatos aquí, ya que la única otra fue eliminada por su propietario, y curles una alternativa en lugar de un equivalente literal.
Chris Stratton
2
Gracias, esto fue útil para mí ya que alguien con cerveza ya estaba instalado.
enderland
44
@Michaelangelo Y ese no es tu trabajo destrozar las publicaciones de otros. No debe editar otras respuestas para hacer sus propios puntos, eso es inapropiado. De hecho, las acciones se están discutiendo en Meta: meta.stackoverflow.com/questions/315892/…
Zizouz212
2
@EricHartford La votación negativa no resuelve el problema. Proporcionó una alternativa, sin enumerar la otra opción de cómo instalar wget manualmente.
Michaelangel007
1
Creo que tienes un buen punto. Y editaré la respuesta para incorporar sus ideas.
Eric Hartford
87

Curl tiene un modo que es casi equivalente al wget predeterminado.

curl -O <url>

Esto funciona igual que

wget <url>

Y, si lo desea, puede agregar esto a su .bashrc:

alias wget='curl -O'

No es 100% compatible, pero funciona para el uso de wget más común (IMO)

Ed Henderson
fuente
2
¿Cómo haces recursivo con esto?
Jasper
Puede usar bash para agregar esto a un bucle como este: for i in `seq 1 <n>` do curl -O <url>;done;donde <n> es la cantidad de veces que desea iterar y <url> es la url para extraer.
Blairg23
1
A veces necesitará agregar la -Lbandera para seguir los redireccionamientos de ubicación. Puedes usar curl -OL <url>para hacer eso.
Gustavo Straube
1
-Otambién solo se aplica al siguiente argumento, por lo que para descargar varias URL debe usar algo como curl -O "$url1" -O "$url2"o printf %s\\n "$url1" "$url2"|xargs -n1 curl -O.
nisetama
Es un buen consejo estupendo. Muchas gracias!
cmcromance
42

1) en tu tipo de mac

nano /usr/bin/wget

2) pegue lo siguiente en

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

3) cierra y luego hazlo ejecutable

chmod 777 /usr/bin/wget

Eso es.

Eamon Straughn
fuente
Mejor que un alias.
MK
3
Casi correcto. Creo que el primer paso debería ser vim /usr/bin/wget;) jaja es broma. gracias por la respuesta, esto nunca se me ocurrió y por alguna razón no tengo ganas de instalar brew / fink / lo que sea, así que felicitaciones por la fácil respuesta portátil.
Kasapo
3
-Les importante para manejar las 301respuestas http . wget los maneja por defecto.
Donn Lee
"curl -L resource.url / tar.tar.gz -O tar.tar.gz" funcionó bien, gracias por esta única solución viable entre otras en este hilo para mi caso de uso.
Oleksii Kyslytsyn
sudo nano / usr / bin / wget
Vino
18

Uso curl;

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

Aquí está el equivalente de Mac OS X del wget de Linux.

Para Linux, por ejemplo Ubuntu en una instancia de AWS, use:

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

En una Mac, es decir, para el desarrollo local, use esto:

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

El parámetro -o se requiere en una Mac para la salida a un archivo en lugar de en la pantalla. Especifique un nombre de destino diferente para cambiar el nombre del archivo descargado.

Use capital -O para renombrar con wget. Minúscula -o especificará el archivo de salida para el registro de transferencia.

Oliver Schafeld
fuente
5

Puede compilar wget en la máquina Mac o usar MacPorts para instalarlo directamente.

sudo port install wget 

Esto funcionaría de maravilla, también puede actualizar a la última versión tan pronto como esté disponible. El puerto es mucho más estable que la cerveza, aunque tiene una cantidad mucho menor de fórmula y puertos.

Puede instalar MacPorts desde https://www.macports.org/install.phpdonde puede descargar el .pkgarchivo e instalarlo.

Hammad Haleem
fuente
y como instalas puerto?
Roy Lovejoy
5

En lugar de ir con un equivalente, puedes probar "brew install wget" y usar wget.

Necesitas tener brew instalado en tu mac.

Jaya Konduru
fuente
1
No lo rechazaré, pero este es un engaño de la respuesta de Eric el 13 de junio de 2013.
MarkHu
4

Podrías usar curlen su lugar. Se instala por defecto en /usr/bin.

James Sumners
fuente
2

wget Mac binario precompilado

Para aquellos que buscan una instalación rápida de wget en Mac, consulte el binario precompilado de Quentin Stafford-Fraser aquí, que ha existido durante más de una década:

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

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

Sin hacer / instalar / puerto / brew / curl junk. Simplemente descargue, instale y ejecute. Funciona con Mac OS X 10.3-10.12 +.

Beejor
fuente