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.


Respuestas:


713

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


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'

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)


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.


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

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.


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.


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.


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


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 +.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.