In Bezug auf den Abschluss der Abstimmung als meinungsbasiert: Wie fördert die Frage nach dem Unterschied zwischen zwei Instrumenten meinungsbasierte Antworten?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Angenommen, ich muss eine Webseite herunterladen, sagen wir mal www.google.com. Soll ich nach wget oder curl suchen?" Was ist das, wenn nicht meinungsbasiert?
Muru
2
@muru, Es hängt davon ab, was Sie unter "Herunterladen einer Webseite" verstehen. Wenn Sie eine http-Anfrage senden und die Ergebnisse zurückerhalten möchten, ist Curl ideal. Wenn Sie eine Seite herunterladen möchten, andere Seiten, auf die sie verweist, und verwandte Elemente, funktioniert Curl nicht, und Wget ist die einzige Option. Es gibt sachliche Unterschiede zwischen ihnen, die diese Ansicht nicht begründen.
Barbecue
3
@muru Ich denke, wir haben nur unterschiedliche Interpretationen des Gefühls hinter der Frage. In meiner Interpretation lautet das Gefühl: "Ich habe von diesen beiden Werkzeugen gehört, die anscheinend dasselbe tun. Was ist der Unterschied zwischen ihnen und wann sollte ich eines vor dem anderen wählen? Was ist in diesem speziellen Fall?" ... das scheint mir eine vernünftige Frage zu sein.
Michael Martin-Smucker
Antworten:
33
Nachdem Sie "ordnungsgemäße Verwendung" definiert haben, verwenden Sie wget.
Warum? Deshalb:
Rekursiv! Die größte Stärke von wget im Vergleich zu curl ist die Möglichkeit, rekursiv oder einfach alles herunterzuladen, worauf von einer Remote-Ressource verwiesen wird, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.
Bibliothek . curlwird angetrieben von libcurl- einer plattformübergreifenden Bibliothek mit einer stabilen API, die von jedem verwendet werden kann. Dieser Unterschied ist gravierend, da er eine völlig andere Einstellung zur internen Arbeitsweise erzeugt. Es ist auch etwas schwieriger, eine Bibliothek zu erstellen als ein "bloßes" Befehlszeilenprogramm.
Rohre . curlFunktioniert eher wie der traditionelle Unix- catBefehl, sendet mehr Daten an stdoutund liest mehr stdinauf "Alles ist eine Pipe" Weise. wgetist eher cpmit dem gleichen analogen.
Einzelschuss . curlist im Grunde genommen für die einmalige Übertragung von Daten gedacht. Sie überträgt nur die vom Benutzer angegebenen URLs und enthält weder eine rekursive Download-Logik noch eine Art HTML-Parser.
Weitere Protokolle . curlUnterstützt FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, DATEI, POP3, IMAP, SMB / CIFS, SMTP, RTMP und RTSP. Wget unterstützt nur HTTP, HTTPS und FTP.
Tragbarer . curlbaut und läuft auf viel mehr Plattformen als wget. Zum Beispiel: OS / 400, TPF und andere "exotische" Plattformen, die keine einfachen Unix-Klone sind.
Weitere SSL-Bibliotheken und SSL-Unterstützung . curlkann mit einer von elf (11!) verschiedenen SSL / TLS-Bibliotheken erstellt werden und bietet mehr Kontrolle und umfassendere Unterstützung für Protokolldetails. curlunterstützt das Pinning von öffentlichen Schlüsseln.
HTTP Auth . curlunterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und Negotiate
Socken . curlunterstützt mehrere SOCKS-Protokollversionen für den Proxy-Zugriff
Bidirektional . curlBietet Upload- und Sendefunktionen. wgetBietet nur einfache HTTP-POST-Unterstützung.
HTTP-Multipart- / Formulardaten-Versand , mit dem Benutzer HTTP-Uploads durchführen und im Allgemeinen Browser emulieren und HTTP-Automatisierung in größerem Umfang durchführen können
curlunterstützt gzipund bläst Content-Encoding auf und dekomprimiert es automatisch
curl bietet und dekomprimiert transfercodiertes HTTP, wget nicht
curl Unterstützt HTTP / 2 und Dual-Stack-Verbindungen mit Happy Eyeballs
Viel mehr Entwickleraktivität . Während dies diskutiert werden kann, betrachte ich hier drei Metriken: Aktivität der Mailing-Liste, Häufigkeit des Commits des Quellcodes und Häufigkeit der Veröffentlichung. Jeder, der diese beiden Projekte verfolgt, kann feststellen, dass das Curl-Projekt in all diesen Bereichen ein viel höheres Tempo aufweist, und das schon seit über 10 Jahren. Vergleiche auf openhub
wget
wgetist nur Befehlszeile. Es gibt keine Bibliothek.
Rekursiv ! wgetDie größte Stärke im Vergleich zu Curl ist die Möglichkeit, rekursiv oder einfach alles, worauf Bezug genommen wird, von einer Remote-Ressource herunterzuladen, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.
Älter . wgethat Spuren bis 1995, während curlfrühestens Ende 1996 zurückverfolgt werden können.
GPL . wgetist 100% GPL v3. curl ist MIT lizensiert.
GNU . wgetist Teil des GNU-Projekts und alle Urheberrechte liegen bei FSF. Das Curl-Projekt ist völlig eigenständig und unabhängig, und es gibt überhaupt keine Eltern von Organisationen, die fast alle Urheberrechte von Daniel besitzen.
wgeterfordert keine zusätzlichen Optionen zum einfachen Herunterladen einer Remote-URL in eine lokale Datei, während curlerfordert -ooder -O.
wget unterstützt die öffentliche Suffix-Liste für die Behandlung von Cookie-Domänen, Curl nicht.
wget unterstützt nur GnuTLS oder OpenSSL für SSL / TLS-Unterstützung
wget unterstützt nur Basic-Authentifizierung als einzigen Authentifizierungstyp über HTTP-Proxy
wget hat keine SOCKS-Unterstützung
Seine Fähigkeit, sich von einer vorzeitig unterbrochenen Übertragung zu erholen und den Download fortzusetzen, hat keine Entsprechung.
wget Kann nur mit der linken Hand auf einer QWERTY-Tastatur eingegeben werden!
"Das Curl-Projekt ist völlig eigenständig und unabhängig, und es gibt überhaupt keine Eltern von Organisationen, die fast alle Urheberrechte von Daniel besitzen." Ich bin mir nicht sicher, ob das eine schlechte Sache ist ...
Barbecue
"Seine Fähigkeit, sich von einer vorzeitig unterbrochenen Übertragung zu erholen und den Download fortzusetzen, hat kein Gegenstück." Habe ich diesen Satz falsch verstanden? Wird curl -C -der Download nicht unterbrochen?
Siyuan Ren
1
Warum empfehlen Sie wget ? Selbst wenn Sie sich die Vergleiche ansehen, die Sie selbst geschrieben haben, klingt Curl weit überlegen. wget can be typed in using only the left hand on a qwerty keyboard!, WTF ?? wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Anmol Singh Jaggi
2
Größe zählt zu: auf einem frischen ubuntu Bild, wget Größe 2M gegen curl 5M verpackt (mit deps, x3 total ausgepackt)
Eran W
19
Es gibt viele Tools , die wie herunterladen curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackusw. Verwenden Sie es entsprechend Ihrer Anforderung und welche Funktion , die Sie mit dem Download verwenden , zusammen wollen. Überprüfen Sie die Merkmalstabelle und verwenden Sie sie entsprechend.
Locke:
Curl unterstützt mehr Protokolle wie FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, DATEI, POP3, IMAP, SMTP, RTMP und RTSP
Curl unterstützt mehr SSL-Bibliotheken
Curl unterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und Negotiate
Curl wird von libcurl unterstützt - einer plattformübergreifenden Bibliothek mit einer stabilen API, die von jedem verwendet werden kann
Wget:
Während wget HTTP, HTTPS und FTP unterstützt
Wget unterstützt nur GnuTLS oder OpenSSL für die SSL / TLS-Unterstützung
Wget unterstützt nur Basic-Authentifizierung als einzigen Authentifizierungstyp über HTTP-Proxy
Wget ist nur ein Kommandozeilen-Tool, es hat keine Bibliothek.
msgstr "wget ist ein Kommandozeilenprogramm, das nur die Bibliothek kennt." Ich verstehe diese Zeile nicht.
Lucio
3
Sie haben viele Funktionen gemeinsam, curlbieten jedoch mehr Optionen. Denn wgetgelegentlich kann es ausreichen zu blättern man wget, aber curlich muss diese Webseite in einem Browser studieren . Ich glaube, alles, was Ihr Browser kann, curlkann es auch.
Es gibt einen weiteren Unterschied zwischen Wet und Curl, den ich für bedeutend halte.
Wget ist ein eigenständiges Befehlszeilenprogramm, mit dem hauptsächlich Internetinhalte schnell und einfach abgerufen werden können.
Curl hingegen ist im Grunde genommen ein Terminal-Frontend für die leistungsstarke libcurl-Bibliothek. Libcurl bietet eine Reihe sehr leistungsfähiger Tools für die Arbeit mit URLs in all ihren Formen und Varianten und ist für fast alle Sprachen und Plattformen verfügbar. Mit Curl haben Sie grundsätzlich die Möglichkeit, diese Bibliothek in Shell-Skripten zu verwenden.
Antworten:
Nachdem Sie "ordnungsgemäße Verwendung" definiert haben, verwenden Sie
wget
.Warum? Deshalb:
Rekursiv! Die größte Stärke von wget im Vergleich zu curl ist die Möglichkeit, rekursiv oder einfach alles herunterzuladen, worauf von einer Remote-Ressource verwiesen wird, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.
Schamlos von hier kopiert
curl
Bibliothek .
curl
wird angetrieben vonlibcurl
- einer plattformübergreifenden Bibliothek mit einer stabilen API, die von jedem verwendet werden kann. Dieser Unterschied ist gravierend, da er eine völlig andere Einstellung zur internen Arbeitsweise erzeugt. Es ist auch etwas schwieriger, eine Bibliothek zu erstellen als ein "bloßes" Befehlszeilenprogramm.Rohre .
curl
Funktioniert eher wie der traditionelle Unix-cat
Befehl, sendet mehr Daten anstdout
und liest mehrstdin
auf "Alles ist eine Pipe" Weise.wget
ist ehercp
mit dem gleichen analogen.Einzelschuss .
curl
ist im Grunde genommen für die einmalige Übertragung von Daten gedacht. Sie überträgt nur die vom Benutzer angegebenen URLs und enthält weder eine rekursive Download-Logik noch eine Art HTML-Parser.Weitere Protokolle .
curl
Unterstützt FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, DATEI, POP3, IMAP, SMB / CIFS, SMTP, RTMP und RTSP. Wget unterstützt nur HTTP, HTTPS und FTP.Tragbarer .
curl
baut und läuft auf viel mehr Plattformen alswget
. Zum Beispiel: OS / 400, TPF und andere "exotische" Plattformen, die keine einfachen Unix-Klone sind.Weitere SSL-Bibliotheken und SSL-Unterstützung .
curl
kann mit einer von elf (11!) verschiedenen SSL / TLS-Bibliotheken erstellt werden und bietet mehr Kontrolle und umfassendere Unterstützung für Protokolldetails.curl
unterstützt das Pinning von öffentlichen Schlüsseln.HTTP Auth .
curl
unterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und NegotiateSocken .
curl
unterstützt mehrere SOCKS-Protokollversionen für den Proxy-ZugriffBidirektional .
curl
Bietet Upload- und Sendefunktionen.wget
Bietet nur einfache HTTP-POST-Unterstützung.HTTP-Multipart- / Formulardaten-Versand , mit dem Benutzer HTTP-Uploads durchführen und im Allgemeinen Browser emulieren und HTTP-Automatisierung in größerem Umfang durchführen können
curl
unterstütztgzip
und bläst Content-Encoding auf und dekomprimiert es automatischcurl
bietet und dekomprimiert transfercodiertes HTTP, wget nichtcurl
Unterstützt HTTP / 2 und Dual-Stack-Verbindungen mit Happy EyeballsViel mehr Entwickleraktivität . Während dies diskutiert werden kann, betrachte ich hier drei Metriken: Aktivität der Mailing-Liste, Häufigkeit des Commits des Quellcodes und Häufigkeit der Veröffentlichung. Jeder, der diese beiden Projekte verfolgt, kann feststellen, dass das Curl-Projekt in all diesen Bereichen ein viel höheres Tempo aufweist, und das schon seit über 10 Jahren. Vergleiche auf openhub
wget
wget
ist nur Befehlszeile. Es gibt keine Bibliothek.Rekursiv !
wget
Die größte Stärke im Vergleich zu Curl ist die Möglichkeit, rekursiv oder einfach alles, worauf Bezug genommen wird, von einer Remote-Ressource herunterzuladen, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.Älter .
wget
hat Spuren bis 1995, währendcurl
frühestens Ende 1996 zurückverfolgt werden können.GPL .
wget
ist 100% GPL v3. curl ist MIT lizensiert.GNU .
wget
ist Teil des GNU-Projekts und alle Urheberrechte liegen bei FSF. Das Curl-Projekt ist völlig eigenständig und unabhängig, und es gibt überhaupt keine Eltern von Organisationen, die fast alle Urheberrechte von Daniel besitzen.wget
erfordert keine zusätzlichen Optionen zum einfachen Herunterladen einer Remote-URL in eine lokale Datei, währendcurl
erfordert-o
oder-O
.wget
unterstützt die öffentliche Suffix-Liste für die Behandlung von Cookie-Domänen, Curl nicht.wget
unterstützt nur GnuTLS oder OpenSSL für SSL / TLS-Unterstützungwget
unterstützt nur Basic-Authentifizierung als einzigen Authentifizierungstyp über HTTP-Proxywget
hat keine SOCKS-UnterstützungSeine Fähigkeit, sich von einer vorzeitig unterbrochenen Übertragung zu erholen und den Download fortzusetzen, hat keine Entsprechung.
wget
Kann nur mit der linken Hand auf einer QWERTY-Tastatur eingegeben werden!quelle
curl -C -
der Download nicht unterbrochen?wget can be typed in using only the left hand on a qwerty keyboard!
, WTF ??wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Es gibt viele Tools , die wie herunterladen
curl
,snarf
,wget
,pavuk
,fget
,fetch
,lftp
,aria2
,HTTrack
usw. Verwenden Sie es entsprechend Ihrer Anforderung und welche Funktion , die Sie mit dem Download verwenden , zusammen wollen. Überprüfen Sie die Merkmalstabelle und verwenden Sie sie entsprechend.Locke:
Wget:
Wichtige Ressourcen für weitere Informationen:
Hier ist eine gute Erklärung für curl vs Wget .
Funktionsübersicht: Vergleichen Sie cURL-Funktionen mit anderen Download-Tools
Details der von Curl unterstützten Funktionen: Funktionen - Was kann Curl bewirken?
Details der von wget unterstützten Funktionen: wget-Funktionen
quelle
Sie haben viele Funktionen gemeinsam,
curl
bieten jedoch mehr Optionen. Dennwget
gelegentlich kann es ausreichen zu blätternman wget
, abercurl
ich muss diese Webseite in einem Browser studieren . Ich glaube, alles, was Ihr Browser kann,curl
kann es auch.quelle
Es gibt einen weiteren Unterschied zwischen Wet und Curl, den ich für bedeutend halte.
Wget ist ein eigenständiges Befehlszeilenprogramm, mit dem hauptsächlich Internetinhalte schnell und einfach abgerufen werden können.
Curl hingegen ist im Grunde genommen ein Terminal-Frontend für die leistungsstarke libcurl-Bibliothek. Libcurl bietet eine Reihe sehr leistungsfähiger Tools für die Arbeit mit URLs in all ihren Formen und Varianten und ist für fast alle Sprachen und Plattformen verfügbar. Mit Curl haben Sie grundsätzlich die Möglichkeit, diese Bibliothek in Shell-Skripten zu verwenden.
quelle