Curl Befehlsübersicht
Curl ist ein vielseitiges Kommandozeilen-Tool sowie die zugrunde liegende Bibliothek (libcurl) zum Übertragen von Daten über zahlreiche Netzwerkprotokolle wie HTTP, HTTPS, FTP, FTPS, SCP, SFTP, LDAP, MQTT und viele mehr. Es bietet Funktionen wie Proxy-Unterstützung, Benutzer-Authentifizierung, Cookies, Datei-Uploads und SSL-Verbindungen. Damit ist es ein unverzichtbares Werkzeug für Entwickler, Systemadministratoren und alle, die mit Web-APIs oder netzwerkbasierten Diensten arbeiten.
Diese Anleitung zeigt, wie man mit curl verschiedene HTTP-Anfragen direkt über das Terminal ausführt. Sie erfahren, wie Sie Dateien herunterladen, eigene Header setzen, unterschiedliche HTTP-Methoden verwenden, Weiterleitungen handhaben, JSON-Daten senden, sich bei Servern authentifizieren und im Verbose-Modus Probleme analysieren. Ob beim Testen von APIs oder beim Automatisieren von Netzwerkoperationen – curl ist ein wertvolles Werkzeug für den Arbeitsalltag.
Schnellreferenz
Wenn Sie nur eine kompakte Übersicht über die gängigsten curl-Befehle benötigen, finden Sie hier eine schnelle Zusammenfassung:
# Einfacher GET-Request
$ curl https://example.com
# Ausgabe in Datei speichern
$ curl -o page.html https://example.com
# Weiterleitungen folgen
$ curl -L http://example.com
# POST-Formulardaten senden
$ curl -d "name=John&age=30" -X POST https://example.com
# JSON-Daten senden
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' https://example.com
# Benutzerdefinierten Header hinzufügen
$ curl -H "Authorization: Bearer " https://api.example.com
# Basis-Authentifizierung
$ curl -u user:pass https://example.com
Curl verwenden
Dieser Abschnitt vertieft die Schnellreferenz und erklärt grundlegende curl-Operationen im Detail, einschließlich Dateidownload, Protokollhandhabung und Anforderungsformatierung. Diese Befehle werden häufig verwendet, um die Konnektivität zu prüfen oder öffentliche Webinhalte abzurufen.
Das grundlegende Format des curl-Befehls lautet:
$ curl [optionen] 
curl Befehlsoptionen
| Option | Beschreibung | 
|---|---|
| -o <datei> | Speichert die Ausgabe in der angegebenen Datei | 
| -O | Speichert mit dem gleichen Namen wie die entfernte Datei | 
| -C – | Nimmt einen unterbrochenen Download wieder auf | 
| -v | Aktiviert den Verbose-Modus (Request/Response-Debugging) | 
| -s | Silent-Modus, blendet den Fortschrittsbalken aus | 
| -L | Folgt Weiterleitungen | 
| -I | Ruft nur die Antwort-Header ab | 
| -X <METHODE> | Legt die HTTP-Methode fest (GET, POST, DELETE usw.) | 
| -d <daten> | Sendet POST-Formulardaten | 
| -H „<header>“ | Fügt benutzerdefinierte Header hinzu (z. B. Content-Type, Authorization) | 
| –user-agent | Überschreibt den Standard-User-Agent-String | 
| -u benutzer:pass | Sendet Zugangsdaten für Basis-Authentifizierung | 
| -F | Lädt eine Datei per Multipart-Formular hoch | 
| –fail | Beendet mit Fehler bei 4xx/5xx-Antworten und unterdrückt die Ausgabe des Bodys | 
| -w | Gibt benutzerdefinierte Variablen aus, z. B. die benötigte Zeit (%{time_total}) | 
Detaillierte Verwendung
Die folgenden Abschnitte beschreiben jeden curl-Befehl ausführlicher. Sie finden Beispiele, Syntaxerklärungen und Nutzungshinweise, um zu verstehen, wie jede Option funktioniert und wann sie anzuwenden ist. Diese Erläuterungen ergänzen die Schnellreferenz weiter oben für alle, die eine Schritt-für-Schritt-Anleitung bevorzugen.
Eine Webseite herunterladen
Lädt eine Webseite herunter und zeigt den Quellcode im Terminal an.
Befehlssyntax
$ curl 
Beispiel
$ curl https://www.example.com/index.html
FTP-Protokoll verwenden
Ruft eine Datei über FTP ab.
Befehlssyntax
$ curl ftp:///
Beispiel
$ curl ftp://ftp.example.com/public/readme.txt
Ausgabe in eine Datei speichern
Speichert den heruntergeladenen Inhalt in einer lokalen Datei, anstatt ihn im Terminal auszugeben.
Befehlssyntax
$ curl -o  
$ curl -O 
-o: Speichert die Ausgabe unter einem benutzerdefinierten Dateinamen.
-O: Speichert die Ausgabe mit dem Namen der entfernten Datei.
Beispiel
$ curl -o localcopy.html https://example.com/index.html
$ curl -O https://example.com/index.html
Einen unterbrochenen Download fortsetzen
Wurde ein Download beispielsweise wegen Netzwerkproblemen unterbrochen, kann er mit dieser Option an der Abbruchstelle fortgesetzt werden, anstatt neu zu starten.
Befehlssyntax
$ curl -C -O 
-C -: Setzt den Download fort.
-O: Speichert die Datei mit dem ursprünglichen Namen.
Beispiel
$ curl -C -O https://example.com/bigfile.zip
Ausgabe im Verbose-Modus aktivieren
Aktiviert eine ausführliche Ausgabe, um die Kommunikation von Anfrage und Antwort zu debuggen.
Befehlssyntax
$ curl -v 
-v: Verbose-Modus.
Beispiel
$ curl -v https://example.com
HTTP-Anfragen ausführen
Curl bietet verschiedene Optionen, um mit Webdiensten zu interagieren. Dieser Abschnitt erklärt, wie man Header überprüft, Weiterleitungen folgt, HTTP-Methoden ändert und Anforderungs-Header anpasst.
Nur Antwort-Header abrufen
Ruft nur die Antwort-Header einer URL ab.
Befehlssyntax
$ curl -I 
-I oder –head: Ruft ausschließlich Header ab.
Beispiel
$ curl -I https://example.com
Weiterleitungen folgen
Aktiviert das automatische Folgen von HTTP-3xx-Weiterleitungen.
Befehlssyntax
$ curl -L 
-L: Folgt Weiterleitungen.
Beispiel
$ curl -L http://example.com
HTTP-Methode ändern
Legt mit -X eine benutzerdefinierte HTTP-Methode fest.
Befehlssyntax
$ curl -X [METHODE] 
-X: Gibt die HTTP-Methode an (z. B. GET, POST, DELETE).
Beispiel
$ curl -X DELETE https://example.com/resource/123
Benutzerdefinierte Header hinzufügen
Mit der Option -H lassen sich ein oder mehrere HTTP-Header hinzufügen.
Befehlssyntax
$ curl -H "Header-Name: value" 
Beispiel
$ curl -H "User-Agent: Mozilla/5.0" -H "Cache-Control: no-cache" https://example.com
Einen eigenen User-Agent setzen
Mit –user-agent lässt sich der User-Agent-String der Anfrage festlegen.
Befehlssyntax
$ curl --user-agent "[Agent String]" 
Beispiel
$ curl --user-agent "Mozilla/5.0 (Macintosh)" https://example.com
Formulardaten oder JSON senden (POST)
Mit curl können Sie Formulardaten oder JSON-Daten in HTTP-POST-Anfragen senden. Dies ist besonders wichtig für die Interaktion mit REST-APIs oder beim Übermitteln von Daten an einen Server.
Befehlssyntax
$ curl -d "<key1=value1&key2=value2>" -X POST 
$ curl -X POST -H "Content-Type: application/json" -d '' 
</key1=value1&key2=value2>
Beispiel
$ curl -d "name=John&age=30" -X POST https://example.com
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' https://example.com
Basis-Authentifizierung
Beim Zugriff auf Ressourcen, die durch HTTP Basic Auth geschützt sind, können Sie mit der Option -u Ihre Zugangsdaten direkt in der Anfrage angeben.
Befehlssyntax
$ curl -u : 
Beispiel
$ curl -u admin:secret https://example.com
Erweiterte Nutzung und Tipps
Dieser Abschnitt behandelt fortgeschrittene curl-Muster, die häufig in Skripten, Automatisierung und API-Integrationen eingesetzt werden. Diese Techniken sind nützlich für Scripting, Leistungstests, sichere Authentifizierung und zuverlässige API-Nutzung.
Bei HTTP-Fehlern beenden (–fail)
Lässt curl bei HTTP-Fehlern wie 404 oder 500 still mit einem Fehlercode beenden, ohne Fehlermeldungen auszugeben.
Befehlssyntax
$ curl --fail 
–fail: Beendet still bei HTTP-Fehlern (4xx, 5xx).
Beispiel
$ curl --fail https://example.com/missing-file
Verwenden Sie dies in Skripten, um die Ausführung zu stoppen, wenn eine URL nicht erreichbar ist oder mit einem Fehler antwortet.
HTTP-Anfragezeit messen (-w)
Gibt die Gesamtzeit aus, die für die Durchführung einer Anfrage benötigt wird. Nützlich für Latenzmessungen und Benchmarking.
Befehlssyntax
$ curl -w "%{time_total}\n" -o /dev/null -s 
-w: Benutzerdefinierte Ausgabe nach Abschluss.
%{time_total}: Gesamte Übertragungszeit.
-o /dev/null: Verwirft den Body.
-s: Silent-Modus, um Fortschrittsanzeigen zu unterdrücken.
Beispiel
$ curl -w "%{time_total}\n" -o /dev/null -s https://example.com
Dies hilft dabei, die Antwortzeit von APIs oder die Netzwerklatenz zu messen.
Dateien hochladen (-F)
Lädt Dateien per Multipart-Formular hoch.
Befehlssyntax
$ curl -F "key=@filename.ext" 
-F: Sendet ein Formularfeld mit Datei.
@filename.ext: Liest die Datei von der lokalen Festplatte.
Beispiel
$ curl -F "file=@report.pdf" https://example.com/upload
Verwenden Sie -F, um Dateien als Teil eines Formulars hochzuladen. Nutzen Sie –data-binary, wenn Sie rohe Dateien übertragen möchten.
Mit Bearer Token authentifizieren
Verwenden Sie Bearer Tokens, um auf gesicherte APIs zuzugreifen (z. B. OAuth2-Access-Tokens).
Befehlssyntax
$ curl -H "Authorization: Bearer " 
-H: Setzt einen benutzerdefinierten Header.
Authorization: Bearer: Erforderlich für die meisten modernen APIs.
Beispiel
$ curl -H "Authorization: Bearer abc123" https://api.example.com/data
Dies ist notwendig, um auf private Endpunkte bei Diensten wie GitHub, Stripe oder Cloud-APIs zuzugreifen.
Leise oder detaillierte Ausgabe (-s, -v)
Passen Sie die Ausgabedarstellung je nach Bedarf an.
Silent-Mode-Syntax
$ curl -s 
-s: Unterdrückt Fortschrittsbalken und Fehlermeldungen.
Verbose-Mode-Syntax
$ curl -v 
-v: Zeigt vollständige Anfragedetails und Antworten an.
Beispiel
$ curl -s https://example.com
$ curl -v https://example.com
Verwenden Sie -s für Skripte und Logging. Nutzen Sie -v, um Fehler zu debuggen oder Header zu testen.
Fazit
Curl ist ein unverzichtbares Tool für Entwickler und Systemadministratoren, die über die Kommandozeile mit Webservern, APIs und entfernten Ressourcen arbeiten müssen. Diese Anleitung bietet sowohl Schnellstart-Beispiele als auch detaillierte Erklärungen zu den gängigen curl-Operationen wie dem Herunterladen von Dateien, dem Umgang mit Headern, dem Senden von Daten und der Authentifizierung von Anfragen.
Für weitergehende Informationen empfiehlt sich ein Blick in die offizielle curl-Dokumentation oder die man-Page, um protokollspezifische Funktionen, Scripting-Tricks und fortgeschrittene Anwendungsbeispiele zu entdecken.


