Wie benutzt man curl um Dateien von der Linux-Befehlszeile herunterzuladen

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

curl vs. wget : Was ist der Unterschied?

Die Menschen haben oft Schwierigkeiten, die relativen Stärken der wget und curl Befehle. Die Befehle haben einige funktionale Überschneidungen. 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 in Webseiten und zum rekursiven Herunterladen von Inhalten über eine gesamte Website. Als Befehlszeilen-Download-Manager ist er unübertroffen.

curl erfüllt 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 ermöglicht es Ihnen, mit Remote-Systemen zu interagieren, indem Sie Anfragen an diese Systeme stellen und deren Antworten abrufen und Ihnen anzeigen. Bei diesen Antworten kann es sich durchaus um Inhalte und Dateien von Webseiten handeln, sie können aber auch Daten enthalten, die über einen Webdienst oder eine API als Ergebnis der „Frage“ bereitgestellt werden curl Anfrage.

Und curl ist nicht auf Websites beschränkt. curl unterstützt über 20 Protokolle, darunter HTTP, HTTPS, SCP, SFTP und FTP. Und wohl aufgrund seiner überlegenen Handhabung von Linux-Pipes, curl lässt sich leichter mit anderen Befehlen und Skripten integrieren.


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

Installation curl

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

sudo apt-get install curl

Die curl Ausführung

Die --version Option macht curlseine Version melden. Es listet auch alle Protokolle auf, die es unterstützt.

curl --version

Abrufen einer Webseite

Wenn wir zeigen curl auf einer Webseite, ruft es diese für uns ab.

curl https://www.bbc.com

Aber seine Standardaktion besteht darin, es als Quellcode im Terminalfenster zu speichern.

In acht nehmen: Wenn du es nicht sagst curl Wenn Sie etwas als Datei speichern möchten, wird es immer 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

Lass es uns erzählen curl um die Ausgabe in eine Datei umzuleiten:

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


Diesmal sehen wir die abgerufenen Informationen nicht, sie werden direkt an die Datei für uns gesendet. Da keine Terminalfensterausgabe zum Anzeigen vorhanden ist, curl gibt eine Reihe von Fortschrittsinformationen aus.

Das hat es in der vorherigen nicht getan example weil die Fortschrittsinformationen über den Quellcode der Webseite verstreut gewesen wären, also curl automatisch unterdrückt.

In diesem example, curl erkennt, dass die Ausgabe in eine Datei umgeleitet wird und dass es sicher ist, die Fortschrittsinformationen zu generieren.

Die bereitgestellten Informationen sind:

  • % Gesamt: Der abzurufende Gesamtbetrag.
  • % Empfangen: Der Prozentsatz und die tatsächlichen Werte der bisher abgerufenen Daten.
  • % Xferd: Der Prozentsatz und der tatsächlich gesendete Wert, wenn Daten hochgeladen werden.
  • Durchschnittliche Geschwindigkeit Dload: Die durchschnittliche Download-Geschwindigkeit.
  • Durchschnittliche Upload-Geschwindigkeit: Die durchschnittliche Upload-Geschwindigkeit.
  • Gesamtzeit: Die geschätzte Gesamtdauer der Übertragung.
  • Zeitaufwand: Die bisher verstrichene Zeit für diese Übertragung.
  • Übrige Zeit: Die geschätzte verbleibende Zeit bis zum 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 namens „bbc.html“.

Wenn Sie auf diese Datei doppelklicken, wird Ihr Standardbrowser geöffnet, sodass die abgerufene Webseite angezeigt wird.

Die abgerufene Webseite wird in einem Browserfenster angezeigt.


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

Wir müssen die Ausgabe nicht umleiten, um eine Datei zu erstellen. Wir können eine Datei erstellen, indem wir die -o (Ausgabe-)Option und sagen curl um die Datei zu erstellen. Hier verwenden wir die -o Option und geben Sie den Namen der Datei an, die wir erstellen möchten „bbc.html“.

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

Verwenden eines Fortschrittsbalkens zum Überwachen von Downloads

Um die textbasierten Download-Informationen durch einen einfachen Fortschrittsbalken zu ersetzen, verwenden Sie die -# (Fortschrittsbalken) Option.

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

Neustart eines unterbrochenen Downloads

Ein abgebrochener oder unterbrochener Download kann einfach wieder aufgenommen werden. Lassen Sie uns einen Download einer beträchtlichen Datei starten. Wir verwenden den neuesten Long Term Support-Build von Ubuntu 18.04. Wir verwenden die --output Option, um den Namen der Datei anzugeben, in der wir sie speichern möchten: „ubuntu180403.iso“.

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

Der Download beginnt und arbeitet sich bis zum Abschluss vor.

Fortschritt eines großen Downloads in einem Terminalfenster

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

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

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


Der Download wird neu gestartet. curl meldet den Offset, bei dem es neu gestartet wird.

Abrufen von HTTP-Headern

Mit dem -I (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

Dieser Befehl ruft nur Informationen ab; es lädt keine Webseiten oder Dateien herunter.

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 namens „urls-to-download.txt“. Wir können benutzen xargs zu den Inhalt jeder Zeile behandeln der Textdatei als Parameter, in den sie eingespeist 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 die -O (Remote-Datei) Ausgabebefehl, der ein „O“ in Großbuchstaben verwendet. Diese Option verursacht curl um die abgerufene Datei unter demselben Namen zu speichern, den die Datei auf dem Remote-Server hat.

Die -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 mehrere Dateien herunterladen

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

heruntergeladene Datei im Nautilus-Dateibrowser

So verwenden Sie den xargs-Befehl unter Linux

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 Passwort authentifizieren müssen. So übergeben Sie einen Benutzernamen und ein Passwort mit curl benutze die -u (Benutzer) und geben Sie den Benutzernamen, einen Doppelpunkt „:“ und das Kennwort ein. Setzen Sie kein Leerzeichen vor oder nach dem Doppelpunkt.

Dies ist ein kostenloser FTP-Server zum Testen, gehostet von Rebex. Die Test-FTP-Site hat den voreingestellten Benutzernamen „demo“ und das Passwort ist „password“. 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 stellt fest, dass wir auf einen FTP-Server verweisen, und gibt eine Liste der Dateien zurück, die auf dem Server vorhanden sind.

Die einzige Datei auf diesem Server ist eine Datei „readme.txt“ mit einer Länge von 403 Byte. Holen wir es zurück. Verwenden Sie den gleichen Befehl wie vorhin, mit dem angehängten Dateinamen:

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

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

In fast allen Fällen ist es bequemer, die abgerufene Datei für uns auf der Festplatte zu speichern, anstatt sie im Terminalfenster anzuzeigen. Wir können wieder die -O (Remote-Datei) Ausgabebefehl, um die Datei mit demselben Dateinamen wie auf dem Remote-Server auf der Festplatte zu speichern.

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

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

ls -hl readme.txt

So verwenden Sie den FTP-Befehl unter Linux

Senden von Parametern an Remote-Server

Einige Remoteserver akzeptieren Parameter in Anforderungen, die an sie gesendet werden. Die Parameter können verwendet werden, um die zurückgegebenen Daten zu formatieren, z example, 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 example, das ipify Website über eine API verfügt, kann abgefragt werden, um Ihre externe IP-Adresse zu ermitteln.

curl https://api.ipify.org

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

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

Hier ist ein anderes example die 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 Strichcode. Der Parameter, den wir hier verwenden, ist „0131103628“.

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

Die zurückgegebenen Daten sind umfassend:

Manchmal curl, 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 API interagieren und möglicherweise einige Dateien oder Webseiten herunterladen möchte, würde ich verwenden curl. Vor allem, wenn das Protokoll eines von vielen war, die von nicht unterstützt werden wget.

Linux-Befehle
DateienTeer · pv · Katze · tac · chmod · grep · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · journalctl · Schwanz · stat · ls · fstab · Echo · weniger · chgrp · chown · Rev · aussehen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · srm
Prozessealias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · bei · Charge · kostenlos · welcher · dmesg · chfn · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · Jawohl · töten · Schlaf · sudo · es ist · Zeit · groupadd · Benutzermod · Gruppen · lshw · abschalten · neustarten · Halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzungnetstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · curl · wget · Wer · Wer bin ich · w · iptables · ssh-keygen · ufw

Beste Linux-Laptops für Entwickler und Enthusiasten

Related Posts