Tutorial del comando curl de Linux para principiantes (5 ejemplos)

Aunque los navegadores web son el principal medio a través del cual los usuarios descargan cosas de Internet, hay algunos comandos de Linux que también te permiten hacerlo. Estas herramientas resultan muy útiles en sistemas headless, donde no hay interfaz gráfica de usuario.

En este tutorial, hablaremos de uno de estos comandos -curl- que, entre otras cosas, te permite descargar cosas de la Web. Ten en cuenta que los ejemplos de este artículo se han probado en Ubuntu.

Comando curl de Linux

El comando curl te permite descargar y subir datos a través de la línea de comandos en Linux. A continuación se muestra su sintaxis:

curl [options] [URL...]

Y esto es lo que dice la página man sobre este comando:

 curl is a tool to transfer data from or to a server, using one of the
 supported protocols (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
 IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
 TELNET and TFTP). The command is designed to work without user inter?
 action.

curl offers a busload of useful tricks like proxy support, user authen?
tication, FTP upload, HTTP post, SSL connections, cookies, file trans?
fer resume, Metalink, and more. As you will see below, the number of
features will make your head spin!

curl is powered by libcurl for all transfer-related features. See
libcurl(3) for details.

A continuación te ofrecemos algunos ejemplos de preguntas y respuestas que te darán una mejor idea de cómo funciona curl.

Q1. ¿Cómo funciona el comando curl?

El uso básico es bastante sencillo: basta con pasar la URL como entrada al comando curl, y redirigir la salida a un archivo.

Por ejemplo:

curl http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent > test.torrent

Ten en cuenta que aquí también puedes utilizar la opción -o.

-o, --output <file>
Write output to <file> instead of stdout.

Volviendo a nuestro ejemplo, mientras los datos se descargaban en el archivo «prueba.torrent» de mi sistema, en la línea de comandos se producía la siguiente salida:

Cómo funciona el comando curl

Esto es lo que dice la página del manual sobre este medidor de progreso que se muestra en la salida:

 curl normally displays a progress meter during operations, indicating
 the amount of transferred data, transfer speeds and estimated time
 left, etc.

curl displays this data to the terminal by default, so if you invoke
curl to do an operation and it is about to write data to the terminal,
it disables the progress meter as otherwise it would mess up the output
mixing progress meter and response data.

If you want a progress meter for HTTP POST or PUT requests, you need to
redirect the response output to a file, using shell redirect (>), -o
[file] or similar.

It is not the same case for FTP upload as that operation does not spit
out any response data to the terminal.

If you prefer a progress «bar» instead of the regular meter, -# is your
friend.

Q2. ¿Cómo hacer que curl utilice el mismo nombre de archivo de descarga?

En el ejemplo anterior, ves que tuvimos que especificar explícitamente el nombre del archivo descargado. Sin embargo, si quieres, puedes forzar a curl a que utilice el nombre del archivo que se está descargando como nombre del archivo local. Esto puede hacerse utilizando la opción de línea de comandos -O.

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent

Así, en este caso, en la salida de mi sistema se produjo un archivo llamado «ubuntu-18.04-desktop-amd64.iso.torrent».

Q3. ¿Cómo descargar varios archivos utilizando curl?

Esto tampoco es complicado: sólo tienes que pasar las URL de la siguiente manera:

curl -O [URL1] -O [URL2] -O [URL3] ...

Por ejemplo:

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso.torrent -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso.torrent

Aquí tienes el comando anterior en acción:

Cómo descargar varios archivos con curl

En la salida se muestra el progreso de la descarga de ambas URLs.

Q4. ¿Cómo resolver el problema de «movido»?

A veces, cuando pasas una URL al comando curl, aparecen errores como «Movido» o «Movido permanentemente». Esto suele ocurrir cuando la URL de entrada se redirige a alguna otra URL. Por ejemplo, abres un sitio web como oneplus.com, y se redirige a una URL de tu país de origen (como oneplus.in), por lo que obtienes un error como el siguiente:

Cómo resolver el problema "movido

Si quieres que curl siga la redirección, utiliza en su lugar la opción de línea de comandos -L.

curl -L http://www.oneplus.com

Q5. ¿Cómo reanudar una descarga desde el punto de interrupción?

A veces, una descarga se interrumpe en un punto intermedio. Así que, naturalmente, para ahorrar tiempo y datos, cuando lo intentes de nuevo,. puede que quieras que comience desde el punto en el que se interrumpió. Curl te permite hacer esto utilizando la opción de línea de comandos -C.

Por ejemplo:

 curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-desktop-amd64.iso

La siguiente captura de pantalla muestra el comando curl reanudando la descarga después de que se interrumpiera.

Cómo reanudar una descarga desde el punto de interrupción

Conclusión

Como puedes ver, el comando curl es una utilidad útil si te gusta descargar cosas a través de la línea de comandos. Aquí sólo hemos arañado la superficie, ya que la herramienta ofrece muchas más funciones. Cuando hayas terminado de practicar las opciones de la línea de comandos comentadas en este tutorial, puedes dirigirte a la página del manual de curl para saber más sobre él.

También te podría gustar...