curl(1)
curl(1)
Name
curl - överför en URL
Synopsis
curl [options / URLs]
Description
curl är ett verktyg för att överföra data från eller till en server med hjälp av URL:er. Det stödjer dessa protokoll: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS och WSS.
curl drivs av libcurl för alla överföringsrelaterade funktioner. Se libcurl för detaljer.
Url
URL-syntaxen är protokollberoende. Du kan hitta en detaljerad beskrivning i RFC 3986.
Om du anger en URL utan ett inledande protocol://-schema gissar curl vilket protokoll du vill använda. Därefter använder den som standard HTTP men antar andra baserat på ofta använda värdnamnsprefix. Till exempel: för värdnamn som börjar med "ftp." antar curl att du vill använda FTP.
Du kan ange hur många URL:er som helst på kommandoraden. De hämtas sekventiellt i angiven ordning om du inte använder --parallel. Du kan ange kommandoradsalternativ och URL:er blandat och i valfri ordning på kommandoraden.
curl försöker återanvända anslutningar vid flera överföringar, så att hämtning av många filer från samma server inte använder flera anslutningar och uppsättningshandshakes. Detta förbättrar hastigheten. Återanvändning av anslutningar kan bara göras för URL:er som anges i en enda kommandoradsinvokering och kan inte göras mellan separata curl-körningar.
Ange ett IPv6-zon-ID i URL:en med ett escapat procenttecken. Som i:
http://[fe80::3%25eth0]/
Allt som anges på kommandoraden som inte är ett kommandoradsalternativ eller dess argument antar curl är en URL och behandlar det som en sådan.
Globbing
Du kan ange flera URL:er eller delar av URL:er genom att skriva listor inom klamrar eller intervall inom hakparenteser. Vi kallar detta "globbing".
Ange en lista med tre olika namn så här:
https://fun.example/{one,two,three}.jpg
sftp://{one,two,three}.example/README
Gör sekvenser av alfanumeriska serier genom att använda [] som i:
ftp://ftp.example.com/file[1-100].txt
Med inledande nollor:
ftp://ftp.example.com/file[001-100].txt
Med bokstäver genom alfabetet:
ftp://ftp.example.com/file[a-z].txt
Nästlade sekvenser stöds inte, men du kan använda flera bredvid varandra:
https://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
Du kan ange en steg‑räknare för intervallen för att få var N:te siffra eller bokstav:
https://example.com/file[1-100:10].txt https://example.com/file[a-z:2].txt
När du använder []- eller {}-sekvenser från en kommandoprompt behöver du troligen sätta hela URL:en inom dubbla citationstecken för att undvika att skalet stör. Detta gäller även andra tecken som behandlas som speciella, som till exempel '&', '?' och '*'.
Stäng av globbing med --globoff.
Variables
curl stöder kommandoradsvariabler (tillagt i 8.3.0). Sätt variabler med --variable name=content eller --variable name@file (där "file" kan vara stdin om det sätts till ett ensamt bindestreck (-)).
Variabelinnehåll kan expanderas i alternativparametrar genom att använda "Mall:name" om alternativnamnet har prefixet "--expand-". Detta infogar innehållet i variabeln "name", eller en tom sträng om namnet inte finns som variabel. Infoga "{{" ordagrant i strängen genom att prefixa det med en backslash, som "\{{".
Du kan komma åt och expandera miljövariabler genom att importera dem med "--variable %name". Detta importerar variabeln som heter "name" men avslutar med ett fel om den miljövariabeln inte redan är satt. För att ange ett standardvärde om den inte redan är satt, använd "--variable %name=content" eller "--variable %name@content".
Exempel: hämta miljövariabeln USER och expandera i URL:en, misslyckas om USER inte är satt:
--variable '%USER'
--expand-url = "https://example.com/api/{{USER}}/method"
Vid expansion av variabler stöder curl en uppsättning funktioner som kan göra variabelinnehållet mer praktiskt att använda. Den kan trimma inledande och avslutande blanksteg med "trim", skriva ut innehållet som en JSON‑citerad sträng med "json", URL‑koda strängen med "url", base64‑koda den med "b64" och base64‑avkoda den med "64dec". För att tillämpa funktioner på en variabelexpansion, lägg till dem kolonseparerade till höger om variabeln.
Variabelinnehåll som innehåller null‑bytes som inte är kodade när de expanderas orsakar ett fel.
Exempel: hämta innehållet i en fil som heter $HOME/.secret till en variabel som heter "fix". Se till att innehållet trimmas och procent‑kodas när det skickas som POST‑data:
--variable %HOME
--expand-variable fix@{{HOME}}/.secret
--expand-data "{{fix:trim:url}}"
https://example.com/
Kommandoradsvariabler och expansioner tillkom i 8.3.0.
Output
Om inget annat anges skriver curl mottagen data till stdout. Den kan instrueras att i stället spara data till en lokal fil med alternativen --output eller --remote-name. Om curl får flera URL:er att överföra på kommandoraden behöver den på motsvarande sätt flera alternativ för var de ska sparas.
curl tolkar inte eller "förstår" på annat sätt innehållet den får eller skriver som utdata. Den gör ingen kodning eller avkodning, om du inte uttryckligen ber om det med särskilda kommandoradsalternativ.
Protocols
curl stöder ett stort antal protokoll, eller uttryckt i URL‑termer: scheman. Din specifika build kanske inte stöder alla.
DICT
Låter dig slå upp ord med hjälp av online‑ordböcker.
FILE
Läs eller skriv lokala filer. curl stöder inte att komma åt file://-URL:er på distans, men när den körs på Microsoft Windows fungerar den inbyggda UNC‑metoden. Endast absoluta sökvägar.
FTP(S)
curl stöder File Transfer Protocol med många justeringar och reglage. Med eller utan att använda TLS.
GOPHER(S)
Hämta filer.
HTTP(S)
curl stöder HTTP med många alternativ och variationer. Den kan tala HTTP version 0.9, 1.0, 1.1, 2 och 3 beroende på build‑alternativ och rätt kommandoradsalternativ.
IMAP(S)
Med e‑postläsprotokollet kan curl ladda ned e‑post åt dig. Med eller utan att använda TLS.
LDAP(S)
curl kan göra kataloguppslagningar åt dig, med eller utan TLS.
MQTT
curl stöder MQTT version 3. Nedladdning över MQTT motsvarar att prenumerera på ett ämne, medan uppladdning/postning motsvarar att publicera på ett ämne. MQTT över TLS stöds inte (än).
POP3(S)
Nedladdning från en pop3‑server betyder att hämta ett e‑postmeddelande. Med eller utan att använda TLS.
RTSP
curl stöder RTSP 1.0‑nedladdningar.
SCP
curl stöder SSH version 2 scp‑överföringar.
SFTP
curl stöder SFTP (draft 5) över SSH version 2.
SMB(S)
curl stöder SMB version 1 för uppladdning och nedladdning.
SMTP(S)
Att ladda upp innehåll till en SMTP‑server betyder att skicka ett e‑postmeddelande. Med eller utan TLS.
TELNET
Att hämta en telnet‑URL startar en interaktiv session där den skickar det den läser från stdin och skriver ut det servern skickar.
TFTP
curl kan göra TFTP‑nedladdningar och uppladdningar.
WS(S)
WebSocket över HTTP/1. WSS innebär att det fungerar över HTTPS.
Progress meter
curl visar normalt en progressmätare under operationer som anger mängden överförd data, överföringshastigheter, uppskattad återstående tid osv. Progressmätaren visar överföringshastigheten i byte per sekund. De använda suffixen ("k" för kilo, "M" för mega, "G" för giga, "T" för tera, "P" för peta och "E" för exa) är 1024‑baserade. Till exempel är 1k 1024 byte. 1M är 1048576 byte. Strikt talat gör detta enheterna kibibyte och mebibyte osv.
curl visar dessa data till terminalen som standard, så om du kör curl för att göra en operation och den ska skriva data till terminalen, stänger den av progressmätaren eftersom den annars skulle störa utdata genom att blanda progressmätare och svarsdata.
Om du vill ha en progressmätare för HTTP POST- eller PUT‑förfrågningar behöver du omdirigera svarsutdata till en fil, via skalomdirigering (>) eller --output eller liknande.
Detta gäller inte FTP‑uppladdning eftersom den operationen inte spottar ut någon svarsdata till terminalen.
Om du föredrar en progressbar i stället för den vanliga mätaren är --progress-bar din vän. Du kan också stänga av progressmätaren helt med alternativet --silent.
Version
Den här man‑sidan beskriver curl 8.20.0. Om du använder en senare version finns det risk att denna man‑sida inte dokumenterar den fullt ut. Om du använder en tidigare version försöker detta dokument att inkludera versionsinformation om vilken specifik version som introducerade ändringar.
Du kan alltid ta reda på vilken den senaste curl‑versionen är genom att köra:
curl https://curl.se/info
Den onlineversion av denna man‑sida visar alltid den senaste inkarnationen:
https://curl.se/docs/manpage.html
Options
Alternativ börjar med ett eller två bindestreck. Många av alternativen kräver ett ytterligare värde bredvid. Om angiven text inte börjar med ett bindestreck antas den vara och behandlas som en URL.
Den korta "en‑bindestreck"‑formen av alternativen, till exempel -d, kan användas med eller utan ett mellanslag mellan den och dess värde, även om ett mellanslag är en rekommenderad separator. Den långa "två‑bindestreck"‑formen, till exempel --data, kräver ett mellanslag mellan den och dess värde.
Kortformsalternativ som inte kräver några ytterligare värden kan användas direkt bredvid varandra; till exempel kan du ange alla alternativen -O, -L och -v på en gång som -OLv.
I allmänhet aktiveras alla booleska alternativ med --option och inaktiveras i sin tur med --no-option. Det vill säga: du använder samma alternativnamn men prefixar det med "no-". I den här listan visar vi oftast --option‑versionen av dem.
När --next används återställer den parser‑tillståndet och du börjar om med ett rent alternativtillstånd, förutom för de alternativ som är globala. Globala alternativ behåller sina värden och sin betydelse även efter --next.
Om det långa alternativnamnet slutar med ett likhetstecken ("=") är argumentet texten som följer på dess högra sida. (Tillagt i 8.16.0)
Det första argumentet som är exakt två bindestreck ("--") markerar slutet på alternativ; vilket argument som helst efter slutet på alternativ tolkas som ett URL‑argument även om det börjar med ett bindestreck.
curl gör liten till ingen verifiering av innehållet i kommandoradsargument. Att skicka in "kreativa oktetter" som nya rader kan trigga oväntade resultat.
Följande alternativ är globala: --fail-early, --libcurl, --parallel-immediate, --parallel-max-host, --parallel-max, --parallel, --progress-bar, --rate, --show-error, --stderr, --styled-output, --trace-ascii, --trace-config, --trace-ids, --trace-time, --trace och --verbose.
All options
--abstract-unix-socket <path>
(HTTP) Anslut till servern via en abstrakt Unix-domänsocket, i stället för att använda nätverket. Obs: netstat visar sökvägen för en abstrakt socket med prefixet "@", men argumentet <path> ska inte ha detta inledande tecken.
Om --abstract-unix-socket anges flera gånger används det senast angivna värdet.
Exempel:
curl --abstract-unix-socket socketpath https://example.com
Se även --unix-socket.
--alt-svc <filename>
(HTTPS) Aktivera alt-svc‑tolken. Om filnamnet pekar på en befintlig alt-svc‑cachefil används den. Efter en slutförd överföring sparas cachen igen till filnamnet om den har ändrats.
Ange ett filnamn "" (nollängd) för att undvika läsning/sparning och låta curl hantera cachen i minnet.
Du kan vilja begränsa din umask för att hindra andra användare på samma system från att komma åt den skapade filen.
Om detta alternativ används flera gånger laddar curl innehåll från alla filerna men den sista används för att spara.
--alt-svc kan användas flera gånger på en kommandorad
Exempel:
curl --alt-svc svc.txt https://example.com
Se även --resolve och --connect-to.
--anyauth
(HTTP) Lista ut autentiseringsmetod automatiskt och använd den säkraste som fjärrplatsen påstår sig stödja. Detta görs genom att först göra en förfrågan och kontrollera response‑headers, vilket därmed kan medföra en extra nätverks‑round‑trip. Detta alternativ används i stället för att sätta en specifik autentiseringsmetod, vilket du kan göra med --basic, --digest, --ntlm och --negotiate.
Att använda --anyauth rekommenderas inte om du gör uppladdningar från stdin, eftersom det kan kräva att data skickas två gånger och då måste klienten kunna spola tillbaka. Om behovet skulle uppstå vid uppladdning från stdin misslyckas uppladdningsoperationen.
Används tillsammans med --user.
Exempel:
curl --anyauth --user me:pwd https://example.com
Se även --proxy-anyauth, --basic och --digest.
-a, --append
(FTP SFTP) När detta används vid en uppladdning gör alternativet att curl lägger till (append) i målfilen i stället för att skriva över den. Om fjärrfilen inte finns skapas den. Observera att denna flagga ignoreras av vissa SFTP‑servrar (inklusive OpenSSH).
Att ange --append flera gånger ger ingen extra effekt. Inaktivera det igen med --no-append.
Exempel:
curl --upload-file local --append ftp://example.com/
Se även --range och --continue-at.
--aws-sigv4 <provider1[:prvdr2[:reg[:srv]]]>
(HTTP) Använd AWS V4‑signaturautentisering i överföringen.
Provider‑argumentet är en sträng som används av algoritmen när utgående autentiseringsheaders skapas.
Region‑argumentet är en sträng som pekar på ett geografiskt område av en resurs‑samling (region-code) när regionnamnet utelämnas från endpointen.
Service‑argumentet är en sträng som pekar på en funktion som tillhandahålls av ett moln (service-code) när servicens namn utelämnas från endpointen.
Om --aws-sigv4 anges flera gånger används det senast angivna värdet.
Exempel:
curl --aws-sigv4 "aws:amz:us-east-2:es" --user "key:secret" https://example.com
Tillagt i 7.75.0. Se även --basic och --user.
--basic
(HTTP) Använd HTTP Basic‑autentisering mot fjärrvärden. Denna metod är standard och detta alternativ är vanligtvis meningslöst, om du inte använder det för att åsidosätta ett tidigare satt alternativ som sätter en annan autentiseringsmetod (som --ntlm, --digest eller --negotiate).
Används tillsammans med --user.
Att ange --basic flera gånger ger ingen extra effekt. Inaktivera det igen med --no-basic.
Exempel:
curl -u name:password --basic https://example.com
Se även --proxy-basic.
--ca-native
(TLS) Använd operativsystemets inbyggda CA‑förråd för certifikatverifiering.
Detta alternativ är oberoende av andra CA‑certifikatplatser som sätts vid körning eller vid build‑tid. Dessa platser genomsöks utöver det inbyggda CA‑förrådet.
Detta alternativ fungerar med OpenSSL och dess fork:ar (LibreSSL, BoringSSL, etc) på Windows (Tillagt i 7.71.0) och på Apple OS när libcurl är byggt med Apple SecTrust aktiverat. (Tillagt i 8.17.0)
Detta alternativ fungerar med wolfSSL på Windows, Linux (Debian, Ubuntu, Gentoo, Fedora, RHEL), macOS, Android och iOS. (Tillagt i 8.3.0)
Detta alternativ fungerar med GnuTLS (Tillagt i 8.5.0) och använder också Apple SecTrust när libcurl är byggt med det. (Tillagt i 8.17.0)
Detta alternativ fungerar med Rustls på Windows, macOS, Android och iOS. På Linux är det likvärdigt med att använda Mozillas CA‑certifikatbundle. När det används med Rustls konsulteras _endast_ det inbyggda CA‑förrådet, inte andra platser som sätts vid körning eller build‑tid. (Tillagt i 8.13.0)
Detta alternativ har för närvarande ingen effekt för Schannel. Detta är Microsofts inbyggda TLS‑bibliotek, som som standard använder det inbyggda CA‑förrådet för verifiering om det inte åsidosätts av en CA‑certifikatplatsinställning.
Att ange --ca-native flera gånger ger ingen extra effekt. Inaktivera det igen med --no-ca-native.
Exempel:
curl --ca-native https://example.com
Tillagt i 8.2.0. Se även --cacert, --capath, --dump-ca-embed, --insecure och --proxy-ca-native.
--cacert <file>
(TLS) Använd den angivna certifikatfilen för att verifiera motparten. Filen kan innehålla flera CA‑certifikat. Certifikatet/certifikaten måste vara i PEM‑format. Normalt är curl byggt för att använda en standardfil för detta, så detta alternativ används typiskt för att ändra den standardfilen.
curl känner igen miljövariabeln med namnet 'CURL_CA_BUNDLE' om den är satt och TLS‑backend inte är Schannel, och använder den angivna sökvägen som en sökväg till en CA‑cert‑bundle. Detta alternativ åsidosätter den variabeln.
(Windows) curl letar automatiskt efter en CA‑certifikatfil som heter 'curl-ca-bundle.crt', antingen i samma katalog som curl.exe, eller i Current Working Directory, eller i valfri katalog längs din PATH.
curl 8.11.0 lade till ett build‑time‑alternativ för att inaktivera detta sökbeteende, och ett annat alternativ för att begränsa sökningen till applikationens katalog.
(Schannel) Detta alternativ stöds för Schannel i Windows 7 eller senare (tillagt i 7.60.0). Detta alternativ stöds för bakåtkompatibilitet med andra SSL‑motorer; i stället rekommenderas att använda Windows förråd av rotcertifikat (standard för Schannel).
Om --cacert anges flera gånger används det senast angivna värdet.
Exempel:
curl --cacert CA-file.txt https://example.com
Se även --capath, --dump-ca-embed och --insecure.
--capath <dir>
(TLS) Använd den angivna certifikatkatalogen för att verifiera motparten. Om curl är byggt mot OpenSSL kan flera sökvägar anges genom att separera dem med korrekt plattformsspecifik separator (t.ex. "path1:path2:path3" på Unix‑liknande plattformar för "path1;path2;path3" på Windows).
Certifikaten måste vara i PEM‑format, och om curl är byggt mot OpenSSL måste katalogen ha bearbetats med verktyget c_rehash som följer med OpenSSL. Att använda --capath kan låta OpenSSL‑driven curl göra SSL‑anslutningar mycket mer effektivt än att använda --cacert om --cacert‑filen innehåller många CA‑certifikat.
Om detta alternativ är satt ignoreras standardvärdet för capath.
Om --capath anges flera gånger används det senast angivna värdet.
Exempel:
curl --capath /local/directory https://example.com
Se även --cacert, --dump-ca-embed och --insecure.
-E, --cert <certificate[:password]>
(TLS) Använd den angivna klientcertifikatfilen när du hämtar en fil med HTTPS, FTPS eller ett annat SSL‑baserat protokoll. Certifikatet måste vara i PEM‑format. Om det valfria lösenordet inte anges frågas det efter i terminalen. Observera att detta alternativ förutsätter en certifikatfil där den privata nyckeln och klientcertifikatet är sammanfogade. Se --cert och --key för att ange dem oberoende.
I <certificate>‑delen av argumentet måste du escape:a tecknet ":" som "\:" så att det inte känns igen som lösenordsavgränsare. På samma sätt måste du escape:a dubbla citationstecken som \" så att det inte känns igen som ett escape‑tecken.
Om curl är byggt mot OpenSSL, och motorn pkcs11 eller pkcs11 provider är tillgänglig, kan en PKCS#11‑URI (RFC 7512) användas för att ange ett certifikat som finns i en PKCS#11‑enhet. En sträng som börjar med "pkcs11:" tolkas som en PKCS#11‑URI. Om en PKCS#11‑URI anges sätts alternativet --engine till "pkcs11" om inget angavs och alternativet --cert-type sätts till "ENG" eller "PROV" om inget angavs (beroende på OpenSSL‑version).
Om curl är byggt mot GnuTLS kan en PKCS#11‑URI användas för att ange ett certifikat som finns i en PKCS#11‑enhet. En sträng som börjar med "pkcs11:" tolkas som en PKCS#11‑URI.
(Schannel) Klientcertifikat måste anges med ett path‑uttryck till ett certifikatförråd. (Att läsa in PFX stöds inte; du kan importera det till ett förråd först). Du kan använda "<store location>\<store name>\<thumbprint>" för att referera till ett certifikat i systemets certifikatförråd, till exempel "CurrentUser\MY\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint är vanligtvis en SHA‑1‑hexsträng som du kan se i certifikatdetaljer.
Följande förrådsplatser stöds: CurrentUser, LocalMachine, CurrentService, Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy och LocalMachineEnterprise.
Om --cert anges flera gånger används det senast angivna värdet.
Exempel:
curl --cert certfile --key keyfile https://example.com
Se även --cert-type, --key och --key-type.
--cert-status
(TLS) Verifiera status för servercertifikatet genom att använda TLS‑tillägget Certificate Status Request (även känt som OCSP stapling).
Om detta alternativ är aktiverat och servern skickar ett ogiltigt (t.ex. utgånget) svar, om svaret antyder att servercertifikatet har återkallats, eller om inget svar alls tas emot, misslyckas verifieringen.
Detta stöd är för närvarande endast implementerat i OpenSSL‑ och GnuTLS‑backends.
Att ange --cert-status flera gånger ger ingen extra effekt. Inaktivera det igen med --no-cert-status.
Exempel:
curl --cert-status https://example.com
Se även --pinnedpubkey.
--cert-type <type>
(TLS) Sätt typ för det angivna klientcertifikatet. PEM, DER, ENG, PROV och P12 är igenkända typer.
Standardtypen beror på TLS‑backend och är vanligtvis PEM. För Schannel är det P12. Om --cert är en pkcs11:‑URI är ENG eller PROV standardtypen (beroende på OpenSSL‑version).
Om --cert-type anges flera gånger används det senast angivna värdet.
Exempel:
curl --cert-type PEM --cert file https://example.com
Se även --cert, --key och --key-type.
--ciphers <list>
(TLS) Ange vilka cipher suites som ska användas i anslutningen om den förhandlar TLS 1.2 (1.1, 1.0). Listan över cipher suites måste ange giltiga cipher‑namn. Läs mer om cipher‑suite‑detaljer på denna URL:
https://curl.se/docs/ssl-ciphers.html
Om --ciphers anges flera gånger används det senast angivna värdet.
Exempel:
curl --ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256 https://example.com
Se även --tls13-ciphers, --proxy-ciphers och --curves.
--compressed
(HTTP) Begär ett komprimerat svar med en av algoritmerna curl stöder, och dekomprimera innehållet automatiskt.
Response‑headers modifieras inte när de sparas, så om de "tolkas" separat igen vid ett senare tillfälle kan de verka säga att innehållet är (fortfarande) komprimerat; när det i själva verket redan har dekomprimerats.
Om detta alternativ används och servern skickar en okänd/ostödd kodning rapporterar curl ett fel. Detta är en begäran, inte en order; servern kan men behöver inte leverera data komprimerad.
VARNING: vid dekomprimering av data kan även mycket små överföringar expanderas och generera en enorm mängd byte. Du kanske vill begränsa användningen av detta alternativ till enbart kända och betrodda webbplatser som använder säkra protokoll, kanske i kombination med --max-filesize.
Att ange --compressed flera gånger ger ingen extra effekt. Inaktivera det igen med --no-compressed.
Exempel:
curl --compressed https://example.com
Se även --compressed-ssh.
--compressed-ssh
(SCP SFTP) Aktivera SSH‑komprimering. Detta är en begäran, inte en order; servern kan men behöver inte göra det. Detta låter data skickas komprimerad över nätet och automatiskt dekomprimeras i mottagande ände, för att spara bandbredd.
Att ange --compressed-ssh flera gånger ger ingen extra effekt. Inaktivera det igen med --no-compressed-ssh.
Exempel:
curl --compressed-ssh sftp://example.com/
Se även --compressed.