Wie man cURL für die Datenübertragung über die Kommandozeile und mehr verwendet

Curl Command Guide Featured

Wenn Sie schon eine Weile terminalbasierte Installationsanleitungen für Linux-Anwendungen folgen, sind Sie wahrscheinlich irgendwann schon einmal auf den Befehl curl gestoßen. cURL ist ein Kommandozeilenwerkzeug zum Übertragen von Daten mit URLs. Eine der einfachsten Anwendungen besteht darin, eine Datei über die Kommandozeile herunterzuladen. Dies ist jedoch irreführend, denn cURL ist ein unglaublich leistungsstarkes Werkzeug, das noch viel mehr kann.

Inhaltsverzeichnis

  • Was ist cURL?
  • Installation
  • Verwendung von cURL
  • Weiterleitungen folgen
  • Einen Download fortsetzen
  • Mehr als eine Datei herunterladen
  • Herunterladen mit Authentifizierung
  • Dateien aufteilen und zusammenführen
  • Weitere nützliche Funktionen
  • cURL vs. Wget
  • Häufig gestellte Fragen
  • Fazit

Auch lesen: So kopieren und einfügen Sie Text, Dateien und Ordner im Linux-Terminal

Was ist cURL?

Ursprünglich 1996 von Daniel Sternberg geschrieben, um finanzielle Daten von Webservern abzurufen und in IRC-Kanäle zu übertragen, hat sich cURL zu einem leistungsstarken Werkzeug entwickelt, um Daten abzurufen, ohne einen Browser verwenden zu müssen. Wenn Sie immer das Terminal verwenden, wird dies eines der wichtigeren Werkzeuge in Ihrem Arsenal sein.

In den meisten Linux-Distributionen ist cURL im System vorinstalliert, und Sie können es sofort verwenden. Selbst wenn es nicht installiert ist, finden Sie es in den meisten Repositories, sodass Sie es einfach über das Softwarezentrum installieren können.

Für Windows gibt es keinen „curl-ähnlichen“ Befehl, und macOS hat cURL vorinstalliert, bietet jedoch nicht ganz so viele Flags wie die Linux-Version.

Auch lesen: So verwenden Sie den dd-Befehl in Linux

Installation

Bevor wir weiter machen, müssen wir sicherstellen, dass cURL bereits auf unserem System installiert ist.

Linux

In Debian/Ubuntu-basierten Distributionen verwenden Sie den folgenden Befehl, um cURL zu installieren:

sudo apt install curl

In Arch-basierten Distributionen:

sudo pacman -S curl

In Fedora/CentOS/RHEL:

sudo dnf install curl

macOS

Für macOS ist es bereits vorinstalliert, sodass Sie nichts unternehmen müssen.

Auch lesen: So starten Sie das Terminal im aktuellen Ordner auf dem Mac

Windows

  1. Für Windows 7/10/11 gehen Sie zur cURL-Download-Seite und wählen Sie entweder die 64-Bit- oder 32-Bit-Pakete, je nach verwendeter Architektur. Wenn Sie Ihre Architektur nicht kennen, ist 64-Bit eine sichere Wahl, da die überwiegende Mehrheit der nach 2006 hergestellten Hardware diese verwendet.
  2. Erstellen Sie einen Ordner entweder direkt auf dem Systemlaufwerk oder in „C:\Program Files\“ und nennen Sie ihn „cURL.“

Linuxcurl Newfolder

  1. Gehen Sie zurück zur Zip-Datei, die Sie heruntergeladen haben, öffnen Sie sie und suchen Sie die Datei „curl.exe“ im Ordner „bin“. Kopieren Sie diese Datei in den cURL-Ordner, den Sie erstellt haben. Die EXE, die Sie kopiert haben, ist vollständig eigenständig und in der Lage, jede Permutation auszuführen, die Sie unter Linux ausführen können.
  2. Um diesen Befehl tatsächlich nützlich zu machen, müssen wir ihn zur PATH-Variablen in Windows hinzufügen, damit er von der Eingabeaufforderung überall ausgeführt werden kann.
  • Klicken Sie auf Ihr Startmenü, geben Sie Umgebungsvariablen ein und drücken Sie die Eingabetaste.
  • Klicken Sie auf „Umgebungsvariablen … “ Sie sollten jetzt in den Einstellungen Ihrer Umgebungsvariablen sein.

Linuxcurl Environmentvariables

  • Wählen Sie die Umgebungsvariable „Path“ aus und klicken Sie dann auf „Bearbeiten … “

  • Wenn Sie sich im Bearbeitungsdialog für den Pfad befinden, klicken Sie auf „Neu“ und geben Sie das Verzeichnis ein, in dem sich Ihre „curl.exe“ befindet – zum Beispiel „C:\Program Files\cURL“.

  • Klicken Sie auf „OK“ in den Dialogfenstern, die Sie während dieses Prozesses geöffnet haben, und genießen Sie cURL in Ihrem Terminal!

Jedes Flag in cURL, das unter Linux verwendbar ist, sollte auch in der Windows-Version funktionieren.

Worte an die Weisen: Denken Sie daran, dass die Eingabeaufforderung niemals mit Windows Terminal verwechselt werden sollte. Windows Terminal verfügt über eine eigene Version von cURL, die in PowerShell enthalten ist und ähnliche Funktionen bietet, jedoch ganz anders funktioniert.

Auch lesen: So verwenden Sie den Rm-Befehl in Linux

Verwendung von cURL

Um zu beginnen, geben Sie einfach curl maketecheasier.com in Ihr Terminal ein und drücken Sie die Eingabetaste.

Wenn Sie keine Ausgabe erhalten, liegt das daran, dass der Server dieser Seite nicht konfiguriert ist, um auf zufällige Verbindungsanfragen an seine non-www-Domain zu antworten. Wenn Sie einen Server abfragen, der nicht existiert oder offline ist, erhalten Sie eine Fehlermeldung, die besagt, dass cURL den Host nicht auflösen konnte.

Um cURL wirklich nützlich zu machen, müssen wir ein Protokoll angeben. In unserem Beispiel verwenden wir das HTTPS-Protokoll, um die Startseite dieser Website abzufragen. Geben Sie curl https://www.maketecheasier.com ein.

Linuxcurl Files

Wenn alles gut geht, sollten Sie auf eine riesige Datenwand blicken. Um diese Daten etwas nutzbarer zu machen, können wir cURL anweisen, sie in eine HTML-Datei zu speichern:

curl https://www.maketecheasier.com > ~/Downloads/mte.html

Dieser Befehl speichert den Inhalt der Ausgabe unserer Website in einer HTML-Datei in Ihrem Downloads-Ordner. Navigieren Sie mit Ihrem bevorzugten Datei-Manager zu diesem Ordner und doppelklicken Sie auf die Datei, die Sie gerade erstellt haben. Sie sollte einen Snapshot der HTML-Ausgabe der Startseite dieser Website öffnen.

Ebenso können Sie das -o-Flag verwenden, um dasselbe Ergebnis zu erzielen:

curl -o ~/Downloads/mte.html https://www.maketecheasier.com

Weiterleitungen folgen

Die meisten Websites leiten den Verkehr automatisch vom „http“-Protokoll auf „https“ um. In cURL können Sie dasselbe mit dem -L-Flag erreichen. Dies folgt automatisch 301-Weiterleitungen, bis es eine lesbare Seite oder Datei erreicht.

 curl -L http://google.com.

Linuxcurl Redirect

Einen Download fortsetzen

Beim Download großer Dateien können Unterbrechungen je nach Internetgeschwindigkeit äußerst ärgerlich sein. Glücklicherweise hat cURL eine Resume-Funktion. Das Übergeben des -C-Flags wird dieses Problem schnell lösen.

Um ein praktisches Beispiel zu zeigen, habe ich absichtlich einen Download des Debian-Testversions-ISOs unterbrochen, indem ich während des Downloads die Tasten Strg und C gedrückt habe.

Linuxcurl Interrupted

Für unseren nächsten Befehl hängen wir das -C-Flag an. Zum Beispiel:

curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso

Linuxcurl Resume

Der Download hat erfolgreich dort begonnen, wo er aufgehört hat.

Mehr als eine Datei herunterladen

Da cURL nicht die intuitivste Methode zum Herunterladen mehrerer Dateien bietet, gibt es zwei Methoden, jede mit ihrem eigenen Kompromiss.

Wenn die Dateien, die Sie herunterladen, nummeriert sind (z.B. Datei1, Datei2 usw.), können Sie Klammern verwenden, um das gesamte Spektrum von Dateien und „#“ innerhalb der Ausgabe zu spezifizieren, die Sie mit dem -o-Flag angeben. Um das etwas weniger verwirrend zu gestalten, hier ein Beispiel:

curl "http://example.com/datei[1-5].zip"-o"#1_#2"

Eine einfachere Möglichkeit, dies zu tun, ist mit -O ( --remote-name). Dieses Flag bewirkt, dass cURL die Remote-Datei unter demselben Namen lokal herunterlädt. Da Sie keine Ausgabe angeben müssen, sollten Sie diesen Befehl verwenden, wenn das Terminal in dem Verzeichnis geöffnet ist, in das Sie Dateien herunterladen möchten.

curl -O"https://example.com/datei1.zip"-O"https://example.com/datei2.zip"

Wenn Sie eine große Anzahl von nummerierten Dateien herunterladen möchten, ist --remote-name-all ein besseres Flag dafür:

curl --remote-name-all"https://example.com/datei[1-5].zip"

Sie könnten sogar nicht nummerierte Dateien von derselben Website angeben, ohne die URL erneut eingeben zu müssen, indem Sie Klammern verwenden:

curl --remote-name-all"https://example.com/{datei1.zip,anderedatei.zip,dasistspaß.zip}"

Herunterladen mit Authentifizierung

Laden Sie Dateien herunter, die eine Authentifizierung erfordern (z. B. beim Abrufen von einer privaten FTP-Server), mit dem -u-Flag. Jeder Authentifizierungsantrag muss zuerst den Benutzernamen und dann das Passwort enthalten, wobei ein Doppelpunkt die beiden trennt. Hier ist ein Beispiel, um es einfach zu machen:

curl -u benutzername:passwort -o ~/Downloads/datei.zip ftp://example.com/datei.zip

Dies wird unseren Freund bonobo_bob in den FTP-Server authentifizieren und die Datei in den Downloads-Ordner herunterladen.

Dateien aufteilen und zusammenführen

Wenn Sie aus irgendeinem Grund eine große Datei herunterladen und in Teile aufteilen möchten, können Sie dies mit dem --range-Flag von cURL tun. Mit --range müssen Sie die Bytes angeben, an denen Sie anfangen möchten, bis zu den Bytes, an denen Sie aufhören möchten. Wenn Sie kein Ende für den Bereich angeben, wird einfach der Rest der Datei heruntergeladen.

Im folgenden Befehl wird cURL die ersten 100 MB des Installationsimages von Arch Linux herunterladen:

curl --range0-99999999-o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Für die nächsten 100 MB verwenden Sie --range 100000000-199999999, usw. Sie können diese Befehle verketten, indem Sie den &&-Operator verwenden:

curl --range0-99999999-o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range100000000-199999999-o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range200000000-299999999-o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range300000000-399999999-o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range400000000-499999999-o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range500000000-599999999-o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range600000000-699999999-o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \  
curl --range700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso

Wenn Sie die oben angegebene Befehlsstruktur genau befolgt haben, sollten acht Dateien dort erscheinen, wo Sie cURL aufgefordert haben, sie herunterzuladen.

Um diese Dateien wieder zu vereinen, müssen Sie den cat-Befehl verwenden, wenn Sie unter Linux oder macOS sind, so:

cat arch.part? > arch.iso

Für Windows müssen Sie den copy-Befehl wie folgt verwenden:

copy/b arch.part* arch.iso

Weitere nützliche Funktionen

Es gibt viele Flags und Verwendungen für cURL:

  • -# – Verwendet eine Fortschrittsanzeige, um anzuzeigen, wie weit Sie bei dem sind, was Sie abrufen. Beispiel: curl -# https://asite.com/somefile.zip > ~/somefile.zip.
  • -a – Fordert cURL auf, an eine Datei anzuhängen, anstatt sie zu überschreiben. Beispiel: curl -ao ~/collab-full.x https://example-url.com/collab-part26.x.
  • --head – Holt nur den Antwort-Header vom Server ohne die Ausgabedaten. Dies ist nützlich, wenn Sie entweder eine Website debuggen oder einen Blick auf die vom Server programmierten Antworten auf Anfragen werfen. Beispiel: curl --head https://example-url.com.
  • --limit-rate – Bestellt einen Download mit begrenzter Bandbreite. Es ist nützlich in Situationen, in denen Sie nicht möchten, dass cURL die gesamte verfügbare Bandbreite in Ihrem System beansprucht. Eine einfache Zahl wird als Byte pro Sekunde interpretiert. K steht für Kilobyte pro Sekunde; M steht für Megabyte pro Sekunde. Beispiel: curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip.
  • -o – Wie bereits erwähnt, bestimmt eine Ausgabedatei, die cURL verwenden soll. Beispiel: curl -o ~/Downloads/datei.zip https://thefileplace.com/datei.zip -o datei2.zip https://thefileplace.com/datei2.zip.
  • --proxy – Wenn Sie mit einem Proxy arbeiten möchten, ist dies der Weg, es zu tun. Beispiel: curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.

cURL vs. Wget

Beide wurden im selben Jahr (1996) veröffentlicht, cURL und Wget sind für den Casual Observer praktisch Schwestersoftware. Tauchen Sie ein wenig tiefer ein, können Sie sehen, dass diese beiden Schwestern unterschiedliche Zwecke haben.

Wget

  • Es wurde vollständig von Grund auf entwickelt, um Daten aus dem Internet zu erfassen.
  • Es benötigt nicht die Flags -L oder -o wie cURL; einfach wget [url] eingeben und loslegen!
  • Kann rekursiv herunterladen, um alles in einem Verzeichnis mit dem -r-Flag zu erfassen.
  • Hat alle Funktionen, die ein Benutzer für die tägliche Nutzung benötigt, und eignet sich für alltägliche Sysadmin-Aufgaben.
  • (In Linux) benötigt es nicht viele Abhängigkeiten; alle sollten sofort verfügbar sein.

Auch lesen: So installieren und verwenden Sie wget auf dem Mac

cURL

  • Erweitertes Repertoire an Flags und nützlichen Funktionen für den Remote-Abruf.
  • Unterstützt lokale Netzwerke (LDAP) und Netzwerkdrucker (Samba).
  • Funktioniert gut mit Gzip-Kompressionsbibliotheken.
  • Hängt von libcurl ab, was Entwicklern ermöglicht, Software oder Bash-Skripte zu schreiben, die cURLs Funktionalität enthalten.

Kurz gesagt, Wget ist der „Werkzeugkasten für jedermann“, um Dinge aus dem Internet abzurufen, während cURL dies mit stärker granuliertem Zugriff für Power-User und Systemadministratoren erweitert.

Häufig gestellte Fragen

1. Ich habe einen Zertifikatfehler in Linux erhalten. Wie kann ich ihn beheben?

Wenn Sie einen Fehler erhalten haben, der etwa besagt, dass „der Aussteller des Zertifikats des Peers als nicht vertrauenswürdig markiert wurde“, ist der einfachste Weg, dies zu beheben, das Wiederherstellen des Pakets der gängigen Zertifikate in Ihrer Distribution.

Für Debian/Ubuntu-basierte Systeme:

sudo apt reinstall ca-certificates

Für Fedora/CentOS/RHEL:

dnf reinstall ca-certificates

Für Arch-basierte Systeme:

pacman -S ca-certificates

Beachten Sie, dass Sie in Arch möglicherweise den Paketcache mit pacman -Scc leeren möchten, bevor Sie das Paket der Zertifikate neu installieren.

Wenn Sie immer noch diesen Fehler erhalten, könnte etwas auf der Serverseite nicht stimmen.

2. Ist es sicher, cURL und Bash-Befehle zusammen auszuführen?

Obwohl es nicht der gebräuchlichste Weg ist, Linux-Anwendungen zu installieren, gibt es einige Entwickler (wie die Leute hinter NodeJS), die Ihnen keine Wahl lassen, als curl zusammen mit einem Root-Befehlszugriff-Befehl zu verwenden, der durch Bash ausgeführt wird (z. B. curl [argument] | sudo -E bash -) um die Software zu installieren.

Es mag ein wenig beängstigend erscheinen, aber wenn die Leute hinter der Anwendung vertrauenswürdig sind, ist es sehr unwahrscheinlich, dass Sie etwas kaputt machen. Böswillige Akteure sind überall und können in Repositories wie Archs AUR eindringen, also ist die Installation mit curl in Kombination mit Root-Zugriffs-Befehlen im Allgemeinen nicht unsicherer als eine Installation über Ihren Paketmanager.

3. Kann ich cURL mit Tor verwenden?

Ja! Starten Sie den Tor-Browser (oder einen separaten Tor-Dienst) und verwenden Sie das --proxy-Flag. Tor gibt Ihnen einen lokalen Proxy, den Sie in anderen Anwendungen verwenden können, um Ihre IP zu maskieren. Hier ist ein Beispiel für die Verwendung von cURL mit Tor:

curl --proxy localhost:9050 http://example.com

Standalone-Tor-Dienste verwenden 9050 als ihren Listening-Port, während der Tor-Browser den Port 9150 verwendet.

Fazit

cURL hat sich inmitten des Wandels der Linux-Welt als widerstandsfähig erwiesen und behält seine Rolle als wichtiges Werkzeug im Arsenal des Terminalbenutzers.

Wenn Sie neu in der Kommandozeile sind, schauen Sie sich einige der nützlichsten Linux-Befehle an. Wenn Sie einfach im Internet surfen möchten, anstatt Daten aus dem Internet herunterzuladen, können Sie auch im Terminal browsen.