
curl
è un'utilità della riga di comando per il trasferimento di dati da o verso un server progettata per funzionare senza l'interazione dell'utente. Con curl
, puoi scaricare o caricare dati utilizzando uno dei protocolli supportati, inclusi HTTP, HTTPS, SCP, SFTP e FTP. curl
fornisce una serie di opzioni che ti consentono di riprendere i trasferimenti, limitare la larghezza di banda, supporto proxy, autenticazione utente e molto altro.
In questo tutorial, ti mostreremo come utilizzare lo strumento curl attraverso esempi pratici e spiegazioni dettagliate delle opzioni di curl più comuni.
Installazione di Curl #
Il pacchetto curl è preinstallato sulla maggior parte delle distribuzioni Linux oggi.
Per verificare se il pacchetto Curl è installato sul tuo sistema, apri la tua console, digita curl
e premere invio. Se hai curl
installato, il sistema stamperà curl: try 'curl --help' or 'curl --manual' for more information
. Altrimenti, vedrai qualcosa come curl command not found
.
Se curl
non è installato puoi installarlo facilmente usando il gestore di pacchetti della tua distribuzione.
Installa Curl su Ubuntu e Debian #
sudo apt update
sudo apt install curl
Installa Curl su CentOS e Fedora #
sudo yum install curl
Come usare Curl #
La sintassi per il curl
il comando è il seguente:
curl [options] [URL...]
Nella sua forma più semplice, quando viene invocato senza alcuna opzione, curl
visualizza la risorsa specificata nell'output standard.
Ad esempio, per recuperare example.com
home page che avresti eseguito:
curl example.com
Il comando stamperà il codice sorgente di example.com
home page nella finestra del tuo terminale.
Se non viene specificato alcun protocollo, curl
prova a indovinare il protocollo che desideri utilizzare e verrà impostato automaticamente su HTTP
.
Salva l'output in un file #
Per salvare il risultato del curl
comando, usa il -o
o -O
opzione.
-o
minuscolo salva il file con un nome file predefinito, che nell'esempio seguente è vue-v2.6.10.js
:
curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
-O
maiuscolo salva il file con il nome originale:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
Scarica più file #
Per scaricare più file contemporaneamente, usa più -O
opzioni, seguito dall'URL del file che desideri scaricare.
Nell'esempio seguente stiamo scaricando i file ISO di Arch Linux e Debian:
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
-O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
Riprendi un download #
Puoi riprendere un download usando il -C -
opzione. Questo è utile se la tua connessione si interrompe durante il download di un file di grandi dimensioni e invece di iniziare il download da zero, puoi continuare quello precedente.
Ad esempio, se stai scaricando il file iso di Ubuntu 18.04 usando il seguente comando:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
e improvvisamente la tua connessione si interrompe puoi riprendere il download con:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
Ottieni le intestazioni HTTP di un URL #
Le intestazioni HTTP sono coppie chiave-valore separate da due punti contenenti informazioni come user agent, tipo di contenuto e codifica. Le intestazioni vengono passate tra il client e il server con la richiesta o la risposta.
Usa il -I
opzione per recuperare solo le intestazioni HTTP della risorsa specificata:
curl -I --http2 https://www.ubuntu.com/

Verifica se un sito Web supporta HTTP/2 #
Per verificare se un determinato URL supporta il nuovo protocollo HTTP/2, recupera le intestazioni HTTP con -I
insieme a --http2
opzione:
curl -I --http2 -s https://linuxize.com/ | grep HTTP
Il -s
l'opzione dice curl
per eseguire in modo silenzioso (silenzioso) e nascondere l'indicatore di avanzamento e i messaggi di errore.
Se il server remoto supporta HTTP/2, curl
stampa HTTP/2.0 200
:
HTTP/2 200
In caso contrario, la risposta è HTTP/1.1 200
:
HTTP/1.1 200 OK
Se hai la versione curl 7.47.0
o più recente, non è necessario utilizzare il --http2
opzione perché HTTP/2 è abilitato per impostazione predefinita per tutte le connessioni HTTPS.
Segui reindirizzamenti #
Per impostazione predefinita, curl
non segue le intestazioni della posizione HTTP.
Se provi a recuperare la versione non www di google.com
, noterai che invece di ottenere il sorgente della pagina verrai reindirizzato alla versione www:
curl google.com

Il -L
l'opzione indica curl
per seguire qualsiasi reindirizzamento fino a raggiungere la destinazione finale:
curl -L google.com
Cambia User-Agent #
A volte, durante il download di un file, il server remoto può essere impostato per bloccare l'User-Agent Curl o per restituire contenuti diversi a seconda del dispositivo del visitatore e del browser.
In situazioni come questa per emulare un browser diverso, usa il -A
opzione.
Ad esempio per emulare Firefox 60 useresti:
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
Specifica una velocità massima di trasferimento #
Il --limit-rate
l'opzione consente di limitare la velocità di trasferimento dei dati. Il valore può essere espresso in byte, kilobyte con il k
suffisso, megabyte con m
suffisso e gigabyte con g
suffisso.
Nell'esempio seguente curl
scaricherà il binario Go e limiterà la velocità di download a 1 mb:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
Questa opzione è utile per prevenire il curl
consumando tutta la larghezza di banda disponibile.
Trasferisci file tramite FTP #
Per accedere a un server FTP protetto con curl
, usa -u
opzione e specificare il nome utente e la password come mostrato di seguito:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Una volta effettuato l'accesso, il comando elenca tutti i file e le directory nella home directory dell'utente.
È possibile scaricare un singolo file dal server FTP utilizzando la seguente sintassi:
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
Per caricare un file sul server FTP, usa il -T
seguito dal nome del file che vuoi caricare:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Invia cookie #
A volte potrebbe essere necessario effettuare una richiesta HTTP con cookie specifici per accedere a una risorsa remota o per eseguire il debug di un problema.
Per impostazione predefinita, quando si richiede una risorsa con curl
, nessun cookie viene inviato né memorizzato.
Per inviare cookie al server, utilizzare il -b
switch seguito da un nome file contenente i cookie o una stringa.
Ad esempio, per scaricare il file rpm di Oracle Java JDKjdk-10.0.2_linux-x64_bin.rpm
dovrai passare un cookie chiamato oraclelicense
con valore a
:
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
Utilizzo dei proxy #
curl
supporta diversi tipi di proxy, inclusi HTTP, HTTPS e SOCKS. Per trasferire i dati tramite un server proxy, usa il -x
(--proxy
), seguito dall'URL del proxy.
Il comando seguente scarica la risorsa specificata utilizzando un proxy su 192.168.44.1
porta 8888
:
curl -x 192.168.44.1:8888 http://linux.com/
Se il server proxy richiede l'autenticazione, utilizzare -U
(--proxy-user
) seguita dal nome utente e dalla password separati da due punti (user:password
):
curl -U username:password -x 192.168.44.1:8888 http://linux.com/
Conclusione #
curl
è uno strumento da riga di comando che consente di trasferire dati da o verso un host remoto. È utile per risolvere problemi, scaricare file e altro.
Gli esempi mostrati in questo tutorial sono semplici, ma mostrano il curl
più utilizzato opzioni e hanno lo scopo di aiutarti a capire come il curl
comando di lavoro.
Per ulteriori informazioni su curl
visita la pagina della documentazione sui ricci.
Se hai domande o feedback, sentiti libero di lasciare un commento.