Bruke cURL for å laste ned eksterne filer fra kommandolinjen
Innholdsfortegnelse:
- Last ned eksakte samsvarsfiler med krøll -O
- Lagre en ekstern fil med et annet navn med curl -o
- Last ned flere filer samtidig med curl
Det kraftige curl-kommandolinjeverktøyet kan brukes til å laste ned filer fra omtrent hvilken som helst ekstern server. Langvarige kommandolinjebrukere vet at dette kan være nyttig for en lang rekke situasjoner, men for å holde ting enkelt vil mange finne at nedlasting av en fil med curl ofte kan være et raskere alternativ til å bruke en nettleser eller FTP-klient fra GUI-siden av Mac OS X (eller linux).Dette er nyttig for lokale situasjoner, men det er spesielt nyttig hvis du er i en situasjon der du trenger å laste ned noe til en ekstern Mac når du er koblet til via SSH.
For formålet med denne gjennomgangen, vil vi først og fremst fokusere på å laste ned filer fra de to vanlige HTTP- og SFTP-protokollene, selv om det bør bemerkes at cURL støtter mange flere protokoller. Selv om curl er enkel å bruke, anbefales det å ha litt kunnskap om kommandolinjen.
Last ned eksakte samsvarsfiler med krøll -O
…curl -O
Dette betyr at hvis den angitte URL-filen heter «sample.zip», vil den lastes ned med filnavnet «sample.zip», og hvis filen heter noe enormt og komplisert som «LongExampleFileNameForOSXDaily-v- 1-3-51-revisjon-515b12-readme.txt" på den eksterne serveren, vil den lagre med det nøyaktige navnet på den lokale maskinen. Lengre filnavn håndteres ofte bedre med -o-flagget i stedet for -O, som vi tar opp snart.
Vanlige lesere husker kanskje at vi brukte curl -O-kommandoen når vi forklarte hvordan man trekker ut det faktiske lydinnholdet fra en m3u-strømmefil.
Begynner en nedlasting med curl viser prosenten overført, tid brukt på nedlasting og gjenværende tid, og overføringshastigheten.
Skjermbildet gir en bedre representasjon enn det limte eksemplet nedenfor, men det ser omtrent slik ut:
… --:--:-- --:--:-- 142kMed overføringshastighet som viser at du kan omdirigere utgangen av curl til /dev/null og bruke den til å teste internettilkoblingshastigheten, men wget-kommandoen har en lettere å lese og følge overføringslinjen, så wget er bedre egnet for den oppgaven.
Lagre en ekstern fil med et annet navn med curl -o
Hvis du bruker et liten -o-flagg, kan du spesifisere et annet filnavn for den nedlastede filen enn hvordan den heter på den eksterne serveren. Dette kan være nyttig for å redusere lange filnavn eller bare merke noe slik at det er lettere å finne på egen hånd. Den generelle syntaksen vil være:
curl -o
For eksempel, hvis du vil lagre en iOS IPSW-fil som du fant oppført på Apple-servere uten å ha det lange fulle navnet, kan du bruke følgende:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ips
Dette vil laste ned «iPhone5, 3_7.0.4_11B554a_Restore.ipsw»-filen, men navngitt kortere som den mer meningsfulle «iPhone5C-704.ipsw».
Hvis du heller ikke vil lagre filen i den gjeldende arbeidskatalogen, spesifiser en bane som en del av filnavnet slik:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Last ned flere filer samtidig med curl
cURL kan enkelt laste ned flere filer samtidig, alt du trenger å gjøre er å spesifisere mer enn én URL som f.eks.:
curl -O
For filer med forskjellige navn, eller som ligger på forskjellige servere, eller innenfor forskjellige katalogbaner, bruk hele URL-en, for eksempel:
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
På den annen side, hvis filnavnene som skal lastes ned bruker inkrementell navngivning, kan du bruke parenteser for å spesifisere et nedlastingsområde, slik:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Dette vil hente filene fdl-1.1.txt, fd1-1.2.txt og fd1-1.3.txt alle samtidig uten å måtte spesifisere hver unike URL. Dette fungerer selvfølgelig bare hvis filene er i samme katalog sammen og på samme domene.
Autentisere med krøll
Du kan også bestå autentisering med cURL ved å bruke -u-flagget:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Husk at bash-historikken vil lagre passordet i ren tekst når du bruker -u med et brukernavn og passord spesifisert, så dette anbefales ikke i de fleste situasjoner. Du kan komme rundt det ved å plassere et mellomrom foran "krøll".Hvis du ikke bruker mellomromstasten til å prefikse kommandoen, vil du sannsynligvis tømme kommandohistorikken etterpå for å være sikker.
Støttede curl-protokoller og bruk utover HTTP og FTP
Som nevnt tidligere, går cURL-bruken langt utover HTTP og FTP, ettersom den manuelle sideoppføringen for curl nevner tilleggsprotokoller i beskrivelsen:
I tillegg vil du finne at curl også kan brukes til PUT- og POST-forespørsler, informasjonskapsler, proxy-tjenere, tunneler, gjenoppta nedlastinger og til og med å hente HTTP-headerinformasjon eller endre en brukeragent (effektivt spoofing) uten å måtte bruke en dedikert nettleser.
Som de fleste kommandolinjeverktøy, kan du lære mye mer om curl ved å tilkalle riktig man-side med kommandoen «man curl».