Connect with us

Wie man

So verwenden Sie Curl zum Herunterladen von Dateien über die Linux-Befehlszeile

So verwenden Sie Curl zum Herunterladen von Dateien über die Linux-Befehlszeile

Fatmawati Achmad Zaenuri / Shutterstock

Das Linux curl Befehl kann viel mehr als nur Dateien herunterladen. Finden Sie heraus, was curl ist in der Lage, und wann Sie es anstelle von verwenden sollten wget.

Curl vs. Wget: Was ist der Unterschied?

Menschen haben oft Schwierigkeiten, die relativen Stärken der zu identifizieren wget und curl Befehle. Die Befehle haben einige funktionale Überlappungen. Sie können jeweils Dateien von entfernten Standorten abrufen, aber hier endet die Ähnlichkeit.

wget ist ein fantastisches Tool zum Herunterladen von Inhalten und Dateien. Es kann Dateien, Webseiten und Verzeichnisse herunterladen. Es enthält intelligente Routinen zum Durchlaufen von Links auf Webseiten und zum rekursiven Herunterladen von Inhalten über eine gesamte Website. Es ist als Befehlszeilen-Download-Manager unübertroffen.

curl befriedigt ein ganz anderes Bedürfnis. Ja, es kann Dateien abrufen, aber es kann nicht rekursiv auf einer Website navigieren, um nach abzurufenden Inhalten zu suchen. Was curl Tatsächlich können Sie mit Remote-Systemen interagieren, indem Sie Anforderungen an diese Systeme stellen und deren Antworten abrufen und anzeigen. Diese Antworten können durchaus Webseiteninhalte und -dateien sein, sie können jedoch auch Daten enthalten, die über einen Webdienst oder eine API aufgrund der von der Curl-Anfrage gestellten „Frage“ bereitgestellt werden.

Und curl ist nicht auf Websites beschränkt. curl unterstützt über 20 Protokolle, einschließlich HTTP, HTTPS, SCP, SFTP und FTP. Und wohl aufgrund seiner überlegenen Handhabung von Linux-Pipes, curl kann einfacher in andere Befehle und Skripte integriert werden.

Der Autor von curl hat eine Webseite, die beschreibt die Unterschiede, die er sieht zwischen curl und wget.

Curl installieren

Von den Computern, mit denen dieser Artikel recherchiert wurde, hatten Fedora 31 und Manjaro 18.1.0 curl bereits installiert. curl musste unter Ubuntu 18.04 LTS installiert werden. Führen Sie unter Ubuntu diesen Befehl aus, um ihn zu installieren:

sudo apt-get install curl

sudo apt-get install curl in einem Terminalfenster

Die Curl-Version

Das --version Option macht curlseine Version melden. Außerdem werden alle unterstützten Protokolle aufgelistet.

curl --version

Curl - Version in einem Terminalfenster

Webseite abrufen

Wenn wir zeigen curl Auf einer Webseite wird es für uns abgerufen.

curl https://www.bbc.com

Curl https://www.bbc.com in einem Terminalfenster

Die Standardaktion besteht jedoch darin, es als Quellcode im Terminalfenster abzulegen.

Ausgabe von Curl, die den Quellcode der Webseite in einem Terminalfenster anzeigt

In acht nehmen: Wenn du es nicht sagst curl Wenn Sie möchten, dass etwas als Datei gespeichert wird, wird es im Terminalfenster abgelegt. Wenn es sich bei der abgerufenen Datei um eine Binärdatei handelt, kann das Ergebnis unvorhersehbar sein. Die Shell versucht möglicherweise, einige der Bytewerte in der Binärdatei als Steuerzeichen oder Escape-Sequenzen zu interpretieren.

Speichern von Daten in einer Datei

Lassen Sie uns curl anweisen, die Ausgabe in eine Datei umzuleiten:

curl https://www.bbc.com  > bbc.html

Curl https://www.bbc.com> bbc.html in einem Terminalfenster“ width=“646″ height=“57″ onload=“pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“ onerror=“this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“/></p>
<p>Dieses Mal sehen wir die abgerufenen Informationen nicht, sie werden für uns direkt an die Datei gesendet.  Da keine Terminalfensterausgabe angezeigt werden kann, <code>curl</code> gibt eine Reihe von Fortschrittsinformationen aus.</p>
<p>Dies wurde im vorherigen Beispiel nicht getan, da die Fortschrittsinformationen über den Quellcode der Webseite verteilt gewesen wären <code>curl</code> automatisch unterdrückt.</p>
<p>In diesem Beispiel <code>curl</code> Erkennt, dass die Ausgabe in eine Datei umgeleitet wird und dass die Fortschrittsinformationen sicher generiert werden können.</p>
<p><img class=

Die bereitgestellten Informationen sind:

  • % Gesamt: Der Gesamtbetrag, der abgerufen werden soll.
  • % Empfangen: Der Prozentsatz und die tatsächlichen Werte der bisher abgerufenen Daten.
  • % Xferd: Der Prozentsatz und die tatsächlich gesendeten Daten, wenn Daten hochgeladen werden.
  • Durchschnittliche Geschwindigkeit Dload: Die durchschnittliche Download-Geschwindigkeit.
  • Upload mit durchschnittlicher Geschwindigkeit: Die durchschnittliche Upload-Geschwindigkeit.
  • Zeit insgesamt: Die geschätzte Gesamtdauer der Übertragung.
  • Zeitaufwand: Die bisher verstrichene Zeit für diese Übertragung.
  • Übrige Zeit: Die geschätzte verbleibende Zeit für den Abschluss der Übertragung
  • Momentane Geschwindigkeit: Die aktuelle Übertragungsgeschwindigkeit für diese Übertragung.

Weil wir die Ausgabe von umgeleitet haben curl Zu einer Datei haben wir jetzt eine Datei mit dem Namen „bbc.html“.

bbc.html Datei von curl erstellt.

Durch Doppelklicken auf diese Datei wird Ihr Standardbrowser geöffnet, sodass die abgerufene Webseite angezeigt wird.

Abgerufene Webseite, die in einem Browserfenster angezeigt wird.

Beachten Sie, dass die Adresse in der Adressleiste des Browsers eine lokale Datei auf diesem Computer ist und keine Remote-Website.

Wir müssen nicht ausgeben, um eine Datei zu erstellen. Wir können eine Datei mit dem erstellen -o (Ausgabe) Option und erzählen curl um die Datei zu erstellen. Hier verwenden wir die -o Option und Angabe des Namens der Datei, die wir erstellen möchten „bbc.html“.

curl -o bbc.html https://www.bbc.com

curl -o bbc.html https://www.bbc.com in einem Terminalfenster

Verwenden eines Fortschrittsbalkens zum Überwachen von Downloads

Verwenden Sie die Taste, um die textbasierten Download-Informationen durch einen einfachen Fortschrittsbalken zu ersetzen -# Option (Fortschrittsbalken).

curl -x -o bbc.html https://www.bbc.com

curl -x -o bbc.html https://www.bbc.com in einem Terminalfenster

Neustart eines unterbrochenen Downloads

Es ist einfach, einen abgebrochenen oder unterbrochenen Download neu zu starten. Beginnen wir mit dem Download einer umfangreichen Datei. Wir werden den neuesten Long Term Support Build von Ubuntu 18.04 verwenden. Wir benutzen die --output Option zur Angabe des Namens der Datei, in der wir sie speichern möchten: „ubuntu180403.iso“.

curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

curl --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso in einem Terminalfenster

Der Download startet und arbeitet sich bis zum Abschluss vor.

Fortschritt eines großen Downloads in einem Terminal widnow

Wenn wir den Download mit zwangsweise unterbrechen Ctrl+C Wir kehren zur Eingabeaufforderung zurück und der Download wird abgebrochen.

Verwenden Sie die, um den Download neu zu starten -C Option (weiter bei). Dies bewirkt curl um den Download an einem bestimmten Punkt oder in der Zieldatei neu zu starten. Wenn Sie einen Bindestrich verwenden - als Versatz curl überprüft den bereits heruntergeladenen Teil der Datei und ermittelt den richtigen Offset, der für sich selbst verwendet werden soll.

curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso in einem Terminalfenster

Der Download wird neu gestartet. curl meldet den Offset, bei dem der Neustart erfolgt.

curl -C - --output ubuntu18043.iso http://releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso in einem Terminalfenster

HTTP-Header abrufen

Mit dem -I Mit der Option (head) können Sie nur die HTTP-Header abrufen. Dies ist das gleiche wie das Senden der HTTP HEAD Befehl zu einem Webserver.

curl -I www.twitter.com

Curl -I www.twitter.com in einem Terminalfenster

Dieser Befehl ruft nur Informationen ab. Es werden keine Webseiten oder Dateien heruntergeladen.

Ausgabe von curl -I www.twitter.com in einem Terminalfenster

Mehrere URLs herunterladen

Verwenden von xargs wir können mehrere herunterladen URLs auf einmal. Vielleicht möchten wir eine Reihe von Webseiten herunterladen, die einen einzelnen Artikel oder ein Tutorial bilden.

Kopieren Sie diese URLs in einen Editor und speichern Sie sie in einer Datei mit dem Namen „urls-to-download.txt“. Wir können benutzen xargs zu Behandle den Inhalt jeder Zeile der Textdatei als Parameter, dem sie zugeführt wird curl, im Gegenzug.

https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4
https://tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

Dies ist der Befehl, den wir verwenden müssen, um zu haben xargs Übergeben Sie diese URLs an curl eins nach dem anderen:

xargs -n 1 curl -O < urls-to-download.txt

Beachten Sie, dass dieser Befehl das verwendet -O Ausgabebefehl (Remote-Datei), der ein Großbuchstaben „O“ verwendet. Diese Option verursacht curl um die abgerufene Datei unter demselben Namen zu speichern, den die Datei auf dem Remote-Server hat.

Das -n 1 Option sagt xargs um jede Zeile der Textdatei als einen einzelnen Parameter zu behandeln.

Wenn Sie den Befehl ausführen, werden mehrere Downloads nacheinander gestartet und beendet.

Ausgabe von xargs und curl beim Herunterladen mehrerer Dateien

Das Einchecken im Dateibrowser zeigt, dass mehrere Dateien heruntergeladen wurden. Jeder trägt den Namen, den er auf dem Remote-Server hatte.

heruntergeladene Datei sin den Nautilus-Dateibrowser

Herunterladen von Dateien von einem FTP-Server

Verwenden von curl mit einem Dateiübertragungsprotokoll (FTP) Server ist einfach, auch wenn Sie sich mit einem Benutzernamen und einem Passwort authentifizieren müssen. Um einen Benutzernamen und ein Passwort mit zu übergeben curl benutze die -u (Benutzer-) Option, und geben Sie den Benutzernamen, einen Doppelpunkt „:“ und das Kennwort ein. Setzen Sie kein Leerzeichen vor oder nach dem Doppelpunkt.

Dies ist ein kostenloser Test-FTP-Server, der von gehostet wird Rebex. Die Test-FTP-Site hat den voreingestellten Benutzernamen „Demo“ und das Passwort lautet „Passwort“. Verwenden Sie diese Art von schwachem Benutzernamen und Passwort nicht auf einem Produktions- oder „echten“ FTP-Server.

curl -u demo:password ftp://test.rebex.net

curl -u Demo: Passwort ftp://test.rebex.net in einem Terminalfenster

curl stellt fest, dass wir es auf einen FTP-Server verweisen, und gibt eine Liste der Dateien zurück, die auf dem Server vorhanden sind.

Liste der Dateien auf einem Remtoe-FTP-Server in einem Terminalfenster

Die einzige Datei auf diesem Server ist eine „readme.txt“ -Datei mit einer Länge von 403 Byte. Lassen Sie es uns abrufen. Verwenden Sie denselben Befehl wie vor einem Moment, an den der Dateiname angehängt ist:

curl -u demo:password ftp://test.rebex.net/readme.txt

curl -u Demo: Passwort ftp://test.rebex.net/readme.txt in einem Terminalfenster

Die Datei wird abgerufen und curl zeigt seinen Inhalt im Terminalfenster an.

Der Inhalt einer Datei, die von einem FTP-Server abgerufen wurde, wird in einem Terminalfenster angezeigt

In fast allen Fällen ist es bequemer, die abgerufene Datei für uns auf der Festplatte zu speichern, als sie im Terminalfenster anzuzeigen. Noch einmal können wir die verwenden -O Ausgabebefehl (Remote-Datei) zum Speichern der Datei auf der Festplatte mit demselben Dateinamen wie auf dem Remote-Server.

curl -O -u demo:password ftp://test.rebex.net/readme.txt

curl -O -u Demo: Passwort ftp://test.rebex.net/readme.txt in einem Terminalfenster

Die Datei wird abgerufen und auf der Festplatte gespeichert. Wir können benutzen ls um die Dateidetails zu überprüfen. Es hat denselben Namen wie die Datei auf dem FTP-Server und dieselbe Länge von 403 Byte.

ls -hl readme.txt

ls -hl readme.txt in einem Terminalfenster

Senden von Parametern an Remote-Server

Einige Remoteserver akzeptieren Parameter in Anforderungen, die an sie gesendet werden. Die Parameter können beispielsweise zum Formatieren der zurückgegebenen Daten verwendet werden, oder sie können verwendet werden, um die genauen Daten auszuwählen, die der Benutzer abrufen möchte. Es ist oft möglich, mit dem Web zu interagieren Anwendungsprogrammierschnittstellen (APIs) mit curl.

Als einfaches Beispiel ist die ipify Website hat eine API kann abgefragt werden, um Ihre externe IP-Adresse zu ermitteln.

curl https://api.ipify.org

Durch Hinzufügen der format Parameter für den Befehl, mit dem Wert „json“ können wir erneut unsere externe IP-Adresse anfordern, aber diesmal werden die zurückgegebenen Daten in der verschlüsselt JSON-Format.

curl https://api.ipify.org?format=json

Curl https://api.ipify.org in einem Terminalfenster

Hier ist ein weiteres Beispiel, das eine Google-API verwendet. Es gibt ein JSON-Objekt zurück, das ein Buch beschreibt. Der Parameter, den Sie angeben müssen, ist der Internationale Standardbuchnummer (ISBN) Nummer eines Buches. Sie finden diese auf der Rückseite der meisten Bücher, normalerweise unter einem Barcode. Der Parameter, den wir hier verwenden, ist „0131103628“.

curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628

Curl https://www.googleapis.com/books/v1/volumes?q=isbn:0131103628 in einem Terminalfenster

Die zurückgegebenen Daten sind umfassend:

Google Buch-API-Daten werden in einem Terminalfenster angezeigt

Manchmal kräuseln, manchmal wget

Wenn ich Inhalte von einer Website herunterladen und die Baumstruktur der Website rekursiv nach diesen Inhalten durchsuchen lassen möchte, würde ich verwenden wget.

Wenn ich mit einem Remote-Server oder einer Remote-API interagieren und möglicherweise einige Dateien oder Webseiten herunterladen möchte, würde ich verwenden curl. Besonders wenn das Protokoll eines der vielen war, die von nicht unterstützt wurden wget.

Continue Reading
Click to comment

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Tendencia