¿Cómo puedo ejecutar el comando "curl" equivalente que funciona de manera similar a este comando "wget"?

¿Cómo puedo ejecutar el comando "curl" equivalente que funciona de manera similar a este comando "wget"?

tengo unwgetdominio:

wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

Pero sólo funciona en versiones más nuevas de wget. Lamentablemente tengo una versión anterior de wget(GNU Wget 1.15 basada en darwin14.3.0) y no puedo actualizarla. Específicamente es la wget --show-progressopción que no se reconoce.

Me pregunto si existe un comando equivalente paracurl? La versión de curlmi sistema es 7.37.1 (x86_64-apple-darwin14.0).

Respuesta1

Pero sólo funciona en versiones más nuevas de wget. Lamentablemente tengo una versión anterior de wget(GNU Wget 1.15 basada en darwin14.3.0) y no puedo actualizarla. Específicamente es la wget --show-progress opción que no se reconoce.

Según lo que sé sobre cómo curlfunciona y cómo wgetfunciona, superficialmente pueden parecer iguales, pero no existe un equivalente de wgetfuncionalidad recursiva en curl. Para hacer algo así se curlrequieren algunas secuencias de comandos Bash sofisticadas para ajustar el curlcomando.

Entonces, cuando dices que no puedes actualizar wget, ¿a qué te refieres exactamente? Como wgetes una herramienta GNU, no se instala con Darwin (que está basado en BSD) y, a menudo, se compila desde el código fuente. De hecho, los detalles de la versión que ha proporcionado están claramente compilados desde la fuente de alguna manera, ya que la versión es "GNU Wget 1.15 construida sobre darwin14.3.0". Entonces, si esa versión wgetfue instalada por algo comocerveza casera, hay esperanza, ya que si Homebrew está en su sistema, entonces debería tener Xcode (y las herramientas/compiladores de línea de comandos relacionados) instalados en su sistema también.

Ahora que sabes eso, deberías poder compilar una versión actualizada de wget, como la 1.16.3, desde el código fuente; omitiendo la versión instalada de Homebrew y simplemente ejecutándola desde su directorio de inicio. No tienes rootni sudoacceso para hacer esto; así es como puedes hacerlo.

Compilando wgetdesde la fuente.

Primero, tome un archivo comprimido de un wgetsitio fuente oficial:

curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz

A continuación, descomprima el archivo de esta manera:

tar -xzf wget-1.*.tar.gz

Ahora vaya al directorio descomprimido:

cd wget-1.*

Ejecute este configurecomando:

./configure --with-ssl=openssl

Si de alguna manera ese configurecomando falla, es posible que deba agregar un --with-libssl-prefixvalor como este:

./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib

Una vez que se complete el configureproceso, ejecute make:

make

Si eso se ejecuta correctamente, una versión recién compilada del wgetbinario 1.16.3 estará lista para su uso.

Ejecutando la versión recién compilada wgetdesde su directorio de inicio.

Ahora, en este punto, la mayoría de las instrucciones dirían que debe ejecutarlo sudo make installpara wgetinstalarlo completamente en el sistema. Pero si no tiene privilegios root/ sudo(o no desea actualizar la wgetversión instalada en todo el sistema), aún puede ejecutar el wgetbinario que acaba de compilar de esta manera. Primero, salgamos de su wgetdirectorio fuente de esta manera:

cd ~/

Ahora simplemente ejecute el wgetbinario 1.16.3 que acaba de compilar explícitamente de esta manera para confirmar que está funcionando:

~/wget-1.16.3/src/wget --version

La salida debería ser algo como esto:

GNU Wget 1.16.3 built on darwin13.4.0.

+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
Compile: 
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib 
    -DNDEBUG 
Link: 
    gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o 
    http-ntlm.o ../lib/libgnu.a 

Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <[email protected]>.
Please send bug reports and questions to <[email protected]>.

¡Lo que significa que ahora estás en el negocio!

Ejecutando su wgetcomando desde su directorio de inicio.

Ahora puedes ejecutar el wgetcomando publicado en tu pregunta de esta manera:

~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

Y un pequeño cambio, pero que vale la pena señalar, es que muchas wgetopciones tienen nombres completos y acrónimos abreviados. Entonces --no-parentse puede acortar para -npque el comando se vea así:

~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

Limpieza posterior al uso.

Y si desea deshacerse del wgetmaterial 1.16.3 que acaba de compilar (ya que dice que la computadora en la que está trabajando no es suya), simplemente elimine los wgetarchivos fuente con los que acaba de trabajar de esta manera:

rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3

información relacionada