Wie kann ich den entsprechenden „curl“-Befehl ausführen, der eine ähnliche Leistung wie dieser „wget“-Befehl bietet?

Wie kann ich den entsprechenden „curl“-Befehl ausführen, der eine ähnliche Leistung wie dieser „wget“-Befehl bietet?

Ich habe einwgetBefehl:

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

Aber es funktioniert nur in neueren Versionen von wget. Leider habe ich eine ältere Version von wget(GNU Wget 1.15 basierend auf darwin14.3.0) und kann sie nicht aktualisieren. Genauer gesagt ist es die wget --show-progressOption, die nicht erkannt wird.

Ich frage mich, ob es einen entsprechenden Befehl gibt fürcurl? Die Version curlauf meinem System ist 7.37.1 (x86_64-apple-darwin14.0).

Antwort1

Aber es funktioniert nur in neueren Versionen von wget. Leider habe ich eine ältere Version von wget(GNU Wget 1.15 basierend auf darwin14.3.0) und kann sie nicht aktualisieren. Genauer gesagt ist es die wget --show-progress Option, die nicht erkannt wird.

Basierend auf dem, was ich über die Funktionsweise von curlund die wgetFunktionsweise von weiß, mögen sie oberflächlich betrachtet gleich erscheinen, aber es gibt kein Äquivalent zur wgetrekursiven Funktionalität in curl. Um so etwas in zu tun, ist ein schickes Bash-Skript erforderlich, um den Befehl curlzu umschließen .curl

wgetWas genau meinen Sie also, wenn Sie sagen, dass Sie nicht aktualisieren können ? Da wgetes sich um ein GNU-Tool handelt, wird es nicht mit Darwin (das auf BSD basiert) installiert und wird oft aus dem Quellcode kompiliert. Tatsächlich sind die Versionsdetails, die Sie angegeben haben, eindeutig in irgendeiner Weise aus dem Quellcode kompiliert, da die Version „GNU Wget 1.15, erstellt auf darwin14.3.0“ lautet. Wenn diese Version von also wgetvon etwas wie installiert wurdeSelbstgebrautes, besteht Hoffnung, denn wenn Homebrew auf Ihrem System ist, sollten Sie auch Xcode – und die zugehörigen Befehlszeilentools/Compiler – auf Ihrem System installiert haben.

Wenn Sie das nun wissen, sollten Sie in der Lage sein, eine aktualisierte Version wget– beispielsweise 1.16.3 – aus dem Quellcode zu kompilieren. Dabei umgehen Sie die installierte Homebrew-Version und können sie einfach von Ihrem Home-Verzeichnis aus ausführen. Sie haben hierfür keinen root/ sudo-Zugriff. So können Sie es tun.

Kompilieren wgetaus dem Quellcode.

Laden Sie zunächst ein komprimiertes Archiv von einer offiziellen wgetQuellseite herunter:

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

Als nächstes entpacken Sie das Archiv wie folgt:

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

Gehen Sie nun in das entpackte Verzeichnis:

cd wget-1.*

Führen Sie diesen configureBefehl aus:

./configure --with-ssl=openssl

Wenn dieser configureBefehl aus irgendeinem Grund fehlschlägt, müssen Sie möglicherweise einen --with-libssl-prefixWert wie diesen hinzufügen:

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

Sobald der configureVorgang abgeschlossen ist, führen Sie Folgendes aus make:

make

wgetWenn dies reibungslos läuft , steht Ihnen eine neu kompilierte Version der Binärdatei 1.16.3 zur Verwendung bereit.

Ausführen der neu kompilierten Version von wgetIhrem Home-Verzeichnis.

An dieser Stelle würden die meisten Anweisungen sagen, dass Sie ausführen sollten, sudo make installum die vollständige Installation auf dem System durchzuführen . Aber wenn Sie keine / -Berechtigungen wgethaben – oder die systemweit installierte Version nicht aktualisieren möchten – können Sie die gerade kompilierte Binärdatei trotzdem wie folgt ausführen. Lassen Sie uns zunächst wie folgt aus Ihrem Quellverzeichnis zurückkehren:rootsudowgetwgetwget

cd ~/

Führen Sie nun einfach die wgetsoeben kompilierte Binärdatei 1.16.3 explizit wie folgt aus, um zu bestätigen, dass sie funktioniert:

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

Die Ausgabe sollte ungefähr so ​​aussehen:

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

Das bedeutet, Sie sind jetzt im Geschäft!

Ausführen Ihres wgetBefehls von Ihrem Home-Verzeichnis aus.

Sie können den wgetin Ihrer Frage enthaltenen Befehl jetzt wie folgt ausführen:

~/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/

Eine kleine, aber erwähnenswerte Änderung besteht darin, dass viele wgetOptionen vollständige Namen und verkürzte Akronyme haben. Sie --no-parentkönnen also verkürzt werden, -npsodass der Befehl folgendermaßen aussieht:

~/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/

Reinigung nach der Verwendung.

Und wenn Sie das gerade kompilierte 1.16.3-Material loswerden möchten wget– da Sie ja sagen, dass der Computer, an dem Sie arbeiten, nicht Ihnen gehört –, dann löschen Sie einfach die wgetQuelldateien, mit denen Sie gerade gearbeitet haben, wie folgt:

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

verwandte Informationen