Bruk cURL til å laste ned eksterne filer fra kommandolinjen

Den kraftige curl kommandolinje verktøyet kan brukes til å laste ned filer fra omtrent hvilken som helst ekstern server. Longtime kommandolinje brukere vet at dette kan være nyttig for en rekke situasjoner, men for å holde ting enkelt, vil mange finne at nedlasting av en fil med krøll ofte kan være et raskere alternativ til å bruke en nettleser eller en FTP-klient fra GUI-siden av OS X (eller Linux). Dette er nyttig for lokale situasjoner, men det er spesiell verdi hvis du er i en situasjon der du trenger å laste ned noe til en ekstern Mac når den er koblet til via SSH.

I dette gjennomgangen vil vi først og fremst fokusere på nedlasting av filer fra de to HTTP- og SFTP-protokollene som ofte oppdages, selv om det bør bemerkes at cURL støtter mange flere protokoller. Selv om krøll er lett å bruke, anbefales det å ha litt kunnskap om kommandolinjen.

Last ned eksakte kampfiler med krøll -O

Ved å bruke stor bokstaver -O flagg med krøll laster ned filen fra den eksterne serveren mens du opprettholder det nøyaktige filnavnet, er grunnleggende syntaks for dette følgende:

curl -O [url]

Dette betyr at hvis den angitte URL-filen heter "sample.zip", lastes den ned med filnavnet "sample.zip", og hvis filen heter noe enormt og komplisert som "LongExampleFileNameForOSXDaily-v-1-3-51-revision- 515b12-readme.txt "på den eksterne serveren, vil den lagre med det nøyaktige navnet på den lokale maskinen. Lengre filnavn blir ofte bedre håndtert med -o-flagget i stedet for -O, som vi skal ta opp kort tid.

Vanlige lesere kan huske at vi brukte curl -O-kommandoen når de forklarte hvordan å pakke ut det faktiske lydinnholdet fra en m3u-streamingfil.

Begynnelsen av nedlasting med krøll viser prosentandelen overført, tid brukt nedlasting og gjenstående tid, og overføringshastigheten.

Skjermdumpet gir en bedre representasjon enn det limte eksempelet nedenfor, men det ser noe ut som dette:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Med overføringshastighet som viser at du kan omdirigere utgangen av krøll til / dev / null og bruke den til å teste internettforbindelseshastigheten, men wget-kommandoen har en lettere å lese og følge overføringslinjen, så er wget bedre egnet for den oppgaven.

Lagre en ekstern fil med et annet navn med krøll -o

Ved å bruke et lite-et-flagg, kan du angi et annet filnavn for den nedlastede filen enn hvordan den heter på den eksterne serveren. Dette kan være nyttig for å redusere lengre filnavn eller bare merke noe slik at det er enklere å finne på egenhånd. Den generelle syntaksen ville være:

curl -o [shortname] [url]

Hvis du for eksempel 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.ipsw

Dette vil laste ned filen "iPhone5, 3_7.0.4_11B554a_Restore.ipsw", men kalt kortere som den mer meningsfylte "iPhone5C-704.ipsw".

Hvis du heller ikke vil lagre filen i den nåværende arbeidskatalogen, angir du en sti som en del av filnavnet slik:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Nedlasting av flere filer samtidig med krøll

cURL kan enkelt laste ned flere filer samtidig, alt du trenger å gjøre er å spesifisere mer enn en nettadresse slik:

curl -O [URL 1] [URL 2] [URL 3]

For filer med forskjellige navn, eller vert på forskjellige servere, eller innenfor forskjellige katalogbaner, bruk den komplette nettadressen, 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 trinnvis navngivning, kan du bruke parenteser til å angi et nedlastingsområde, slik som:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

Dette ville fange filene fdl-1.1.txt, fd1-1.2.txt og fd1-1.3.txt alle samtidig uten å måtte spesifisere hver unike URL. Selvfølgelig virker dette bare hvis filene er i samme katalog sammen og på samme domene.

Godkjenning med krøll

Du kan også sende godkjenning med cURL ved å bruke -u-flagget:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Husk at bash-historikken lagrer passordet i ren tekst når du bruker -u med et brukernavn og passord som er oppgitt, og dette anbefales ikke for de fleste situasjoner. Du kan komme seg rundt ved å plassere en plass foran "krøll". Hvis du ikke bruker mellomromstasten til å prefikse kommandoen, vil du sannsynligvis tømme kommandologgen etterpå for å være trygg.

Støttede protokoller og bruk utover HTTP og FTP

Som nevnt tidligere går bruken av cURL langt utover HTTP og FTP, da kretsmanuell sideoppføring nevner tilleggsprotokoller i beskrivelsen:

krøll er et verktøy for å overføre data fra eller til en server, ved hjelp av en av
støttede protokoller (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET og TFTP).

I tillegg finner du at krøll kan også brukes til PUT- og POST-forespørsler, informasjonskapsler, proxyer, tunneler, gjenoppta nedlastinger og til og med gripe HTTP-headerinformasjon eller endre en brukeragent (effektivt spoofing) uten å måtte bruke en dedikert web nettleser.

Som de fleste kommandolinjeverktøy kan du lære mye mer om krøll ved å oppkalle den riktige mannssiden med kommandoen "Man curl".