Använda cURL för att ladda ner fjärrfiler från kommandoraden
Innehållsförteckning:
- Ladda ner exakt matchningsfiler med curl -O
- Spara en fjärrfil med ett annat namn med curl -o
- Ladda ner flera filer samtidigt med curl
Det kraftfulla kommandoradsverktyget curl kan användas för att ladda ner filer från nästan vilken fjärrserver som helst. Långvariga kommandoradsanvändare vet att detta kan vara användbart för en mängd olika situationer, men för att göra saker enkelt kommer många att tycka att nedladdning av en fil med curl ofta kan vara ett snabbare alternativ till att använda en webbläsare eller FTP-klient från GUI-sidan av Mac OS X (eller linux).Det här är användbart för lokala situationer, men det är särskilt värde om du är i en situation där du behöver ladda ner något till en fjärr-Mac när du är ansluten via SSH.
För den här genomgången kommer vi främst att fokusera på att ladda ner filer från de två vanliga HTTP- och SFTP-protokollen, även om det bör noteras att cURL stöder många fler protokoll. Även om curl är lätt att använda, rekommenderas att ha viss kunskap om kommandoraden.
Ladda ner exakt matchningsfiler med curl -O
Med hjälp av versaler -O-flaggan med curl laddas ned filen från fjärrservern samtidigt som det exakta filnamnet bibehålls, grundsyntaxen för detta är följande:
curl -O
Detta betyder att om den angivna URL-filen heter "sample.zip" kommer den att laddas ner med filnamnet "sample.zip", och om filen heter något enormt och komplicerat som "LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt" på fjärrservern, sparas den med det exakta namnet på den lokala maskinen. Längre filnamn hanteras ofta bättre med flaggan -o snarare än -O, som vi kommer att ta upp inom kort.
Vanliga läsare kanske minns att vi använde curl -O-kommandot när vi förklarade hur man extraherar det faktiska ljudinnehållet från en m3u-streamingfil.
Börjar en nedladdning med curl visar den överförda procentandelen, tiden för nedladdning och återstående tid samt överföringshastigheten.
Skärmdumpen ger en bättre representation än det inklistrade exemplet nedan, men det ser ut ungefär så här:
… --:--:-- --:--:-- 142kMed överföringshastighet som visar kan du omdirigera utdata från curl till /dev/null och använda den för att testa internetanslutningshastigheten, men kommandot wget har en lättare att läsa och följa överföringsfältet, så wget är bättre lämpar sig för den uppgiften.
Spara en fjärrfil med ett annat namn med curl -o
Om du använder en gemen -o-flagga kan du ange ett annat filnamn för den nedladdade filen än vad den heter på fjärrservern. Detta kan vara till hjälp för att minska långa filnamn eller bara märka något så att det är lättare att hitta på egen hand. Den allmänna syntaxen skulle vara:
curl -o
Om du till exempel vill spara en iOS IPSW-fil som du hittade listad på Apples servrar utan att ha det långa fullständiga namnet, kan du använda följande:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ips
Detta laddar ner filen "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" men namnges kortare som den mer meningsfulla "iPhone5C-704.ipsw".
Om du hellre inte vill spara filen i den nuvarande arbetskatalogen, ange en sökväg som en del av filnamnet så här:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Ladda ner flera filer samtidigt med curl
cURL kan enkelt ladda ner flera filer samtidigt, allt du behöver göra är att ange mer än en URL som så:
curl -O
För filer med olika namn, eller som finns på olika servrar, eller inom olika katalogsökvägar, använd den fullständiga URL:en, till exempel:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Å andra sidan, om filnamnen som ska laddas ned använder stegvis namngivning, kan du använda parenteser för att ange ett nedladdningsintervall, som så:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Detta skulle ta tag i filerna fdl-1.1.txt, fd1-1.2.txt och fd1-1.3.txt alla samtidigt utan att behöva ange varje unik URL. Naturligtvis fungerar detta bara om filerna finns i samma katalog tillsammans och på samma domän.
Autentisera med lock
Du kan också skicka autentisering med cURL genom att använda flaggan -u:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Tänk på att bash history kommer att lagra lösenordet i vanlig text när du använder -u med ett användarnamn och lösenord specificerat, så detta rekommenderas inte i de flesta situationer. Du kan komma runt det genom att placera ett mellanslag framför "curl".Om du inte använder mellanslagstangenten för att prefixa kommandot, vill du förmodligen tömma kommandohistoriken efteråt för säkerhets skull.
Curlprotokoll och användning som stöds bortom HTTP och FTP
Som nämnts tidigare går cURL-användning långt utöver HTTP och FTP, eftersom inmatningen på sidans manual för curl nämner ytterligare protokoll i beskrivningen:
Dessutom kommer du att upptäcka att curl också kan användas för PUT- och POST-förfrågningar, cookies, proxyservrar, tunnlar, återuppta nedladdningar och till och med ta tag i HTTP-huvudinformation eller ändra en användaragent (effektivt spoofing) utan att behöva använda en dedikerad webbläsare.
Precis som de flesta kommandoradsverktyg kan du lära dig mycket mer om curl genom att anropa lämplig man-sida med kommandot 'man curl'.