2014-12-13 18 views
8

Voglio scaricare un file con arricciatura e non funziona!Il comando Curl non scarica il file (linux mint)

curl -O https://github.com/systems-cs-pub-ro/uso/raw/master/tema1/help/hello.o 

Questo è l'esempio che ho visto su molti siti ufficiali. Dicono che il comando sopra scarica il file hello.o. Non è così! Scarica solo un qualche tipo di output e lo memorizza in un file con lo stesso nome.

Se si esegue il comando di cui sopra, e ho stampare il contenuto di hello.o, si dice:

<html><body>You are being <a href="https://raw.githubusercontent.com/systems-cs-pub-ro/uso/master/tema1/help/hello.o">redirected</a>.</body></html> 

La dimensione di hello.o è di 147 byte.

Inoltre, se digito

wget https://github.com/systems-cs-pub-ro/uso/raw/master/tema1/help/hello.o 

si scarica il file hello.o esattamente come è! Ora, la sua dimensione è 1,2 K

C'è un modo per scaricare il file ciao.o usando curl, esattamente come posso scaricarlo usando wget?

Grazie rispettosamente.

risposta

13

Con Curl, è necessario utilizzare il flag -L come questo:

ricciolo -L https://github.com/systems-cs-pub-ro/uso/raw/master/tema1/help/hello.o> hello.o

Dalla pagina man di Curl:

-L, - posizione (HTTP/HTTPS) Se il server segnala che la pagina richiesta è stata spostata in una posizione diversa (indicata con un'intestazione Location: e un codice di risposta 3XX), questa opzione farà arricciare la richiesta sul nuovo posto. Se usati insieme a -i, --include o -I, --head, verranno mostrate le intestazioni di tutte le pagine richieste. Quando viene utilizzata l'autenticazione, arricciamento invia solo le proprie credenziali all'host iniziale. Se un reindirizzamento si arriccia su un host diverso, non sarà in grado di intercettare l'utente + la password. Vedi anche --location-trusted su come cambiarlo. È possibile limitare la quantità di reindirizzamenti da seguire utilizzando l'opzione --max-redirs. Quando curl segue un reindirizzamento e la richiesta non è un semplice GET (ad esempio POST o PUT), eseguirà la seguente richiesta con un GET se la risposta HTTP è 301, 302 o 303. Se il codice di risposta era un altro 3xx codice, arricciata invierà la seguente richiesta usando lo stesso metodo non modificato.

Si prega di essere consapevole del fatto che la tua domanda è già stato risposto qui: How do I download a tarball from GitHub using cURL?

+1

Grazie rispettosamente. –

+0

Prego. Se questo risponde alla tua domanda, ti preghiamo di sceglierla come risposta accettata. Grazie. –

+0

Migliorare la risposta: puoi fare 'curl -I http: // releases.wikimedia.org/mediawiki/1.24/mediawiki-1.24.1.tar.gz'. L'uso dell'opzione '-I' ti darà alcuni dettagli sulla tua richiesta, come il CODICE HTTP che è stato restituito (301). Quindi, avrai la certezza che c'è un reindirizzamento configurato per il contenuto che stai richiedendo. Saluti e grazie per la risposta :). – ivanleoncz