Cómo usar cURL para la transferencia de datos en la línea de comandos y más

Si has estado siguiendo instrucciones de instalación centradas en la terminal para aplicaciones de Linux durante un tiempo, probablemente te has encontrado con el comando curl en algún momento. cURL es una herramienta de línea de comandos para transferir datos con URLs. Uno de los usos más simples es descargar un archivo a través de la línea de comandos. Sin embargo, esto es engañoso, ya que cURL es una herramienta increíblemente poderosa que puede hacer mucho más.
Tabla de Contenidos
- ¿Qué es cURL?
- Instalación
- Usando cURL
- Siguiendo redirecciones
- Reanudando una descarga
- Descargando más de un archivo
- Descargando con autenticación
- Dividiendo y fusionando archivos
- Otras características útiles
- cURL vs. Wget
- Preguntas frecuentes
- Conclusión
También lee: Cómo copiar y pegar texto, archivos y carpetas en la terminal de Linux
¿Qué es cURL?
Escrito originalmente por Daniel Sternberg en 1996 para obtener datos financieros de servidores web y transmitirlos a canales de IRC, cURL ha evolucionado para convertirse en una herramienta poderosa para obtener datos sin tener que usar un navegador. Si siempre utilizas la terminal, esta será una de las herramientas más importantes en tu arsenal.
En la mayoría de las distribuciones de Linux, cURL ya está preinstalado en el sistema, y puedes usarlo de inmediato. Incluso si no está instalado, también se encuentra en la mayoría de los repositorios, por lo que puedes instalarlo fácilmente usando el Centro de Software.
Para Windows, no tiene un comando “similar a curl”, y macOS tiene cURL preinstalado pero no ofrece tantas opciones como la versión de Linux.
También lee: Cómo usar el comando dd en Linux
Instalación
Antes de proceder, debemos asegurarnos de que cURL ya esté instalado en nuestro sistema.
Linux
En distribuciones basadas en Debian/Ubuntu, usa el siguiente comando para instalar cURL:
sudo apt install curlEn distribuciones basadas en Arch:
sudo pacman -S curlEn Fedora/CentOS/RHEL:
sudo dnf install curlmacOS
Para macOS, ya está preinstalado, así que no necesitas hacer nada.
También lee: Cómo iniciar la terminal en la ubicación actual de la carpeta en Mac
Windows
- Para Windows 7/10/11, dirígete a la página de descarga de cURL y elige entre los paquetes de 64 bits o 32 bits, según la arquitectura que estés utilizando. Si no conoces tu arquitectura, 64 bits es una apuesta segura, ya que la gran mayoría del hardware fabricado después de 2006 utiliza esta arquitectura.
- Crea una carpeta directamente en la unidad del sistema o en “C:\Program Files\” y llámala “cURL.”

- Regresa al archivo zip que descargaste, ábrelo y encuentra “curl.exe” dentro de la carpeta “bin”. Copia eso a la carpeta de cURL que creaste. El EXE que copiaste es completamente independiente y capaz de ejecutar todas las permutaciones que puedes ejecutar en Linux.
- Para hacer que este comando sea realmente útil, debemos agregarlo a la variable PATH en Windows para que pueda ejecutarse desde la línea de comandos en cualquier lugar.
- Haz clic en tu menú de inicio, escribe
environmenty presiona Enter. - Haz clic en “Variables de entorno … ” Ahora deberías estar en la configuración de variables de entorno.

Selecciona la variable de entorno “Path”, luego haz clic en “Editar … “
Una vez en la ventana de diálogo de edición de rutas, haz clic en “Nuevo” y escribe el directorio donde se encuentra tu “curl.exe” – por ejemplo, “C:\Program Files\cURL”.
Haz clic en “OK” en las ventanas de diálogo que abriste durante este proceso y disfruta tener cURL en tu terminal.
Cada opción en cURL que sea utilizable en Linux debería funcionar en la versión de Windows.
Consejo útil: recuerda que la línea de comandos nunca debe confundirse con la terminal de Windows. La terminal de Windows viene con su propia versión de cURL incluida en PowerShell que ofrece una funcionalidad similar pero funciona de manera completamente diferente.
También lee: Cómo usar el comando Rm en Linux
Usando cURL
Para empezar, simplemente escribe curl maketecheasier.com en tu terminal y presiona Enter.
Si no obtienes ninguna salida, es porque el servidor de este sitio no está configurado para responder a solicitudes de conexión aleatorias a su dominio no-www. Si consultaras un servidor que no existe o que no está en línea, recibirías un mensaje de error diciendo que cURL no pudo resolver el host.
Para hacer que cURL haga algo realmente útil, debemos especificar un protocolo. En nuestro ejemplo, estamos usando el protocolo HTTPS para consultar la página de inicio de este sitio. Escribe curl https://www.maketecheasier.com.

Si todo va bien, deberías estar mirando una gigantesca pared de datos. Para hacer que esos datos sean un poco más utilizables, podemos decirle a cURL que los ponga en un archivo HTML:
curl https://www.maketecheasier.com > ~/Downloads/mte.htmlEste comando pone el contenido de la salida de nuestro sitio en un archivo HTML en tu carpeta de Descargas. Navega a la carpeta con tu administrador de archivos favorito y haz doble clic en el archivo que acabas de crear. Debería abrir una instantánea de la salida HTML de la página de inicio de este sitio.
De manera similar, puedes usar la opción -o para lograr el mismo resultado:
curl -o ~/Downloads/mte.html https://www.maketecheasier.comSiguiendo redirecciones
La mayoría de los sitios redirigen automáticamente el tráfico del protocolo “http” a “https”. En cURL, puedes lograr lo mismo con la opción -L. Esto seguirá automáticamente las redirecciones 301 hasta que alcance una página o archivo legible.
curl -L http://google.com.
Reanudando una descarga
Al descargar archivos grandes, dependiendo de tu velocidad de Internet, las interrupciones pueden ser inmensamente irritantes. Afortunadamente, cURL tiene una función de reanudación. Pasar la opción -C resolverá este problema rápidamente.
Para mostrar un ejemplo del mundo real, interrumpí intencionalmente una descarga de la ISO de la versión de prueba de Debian presionando Ctrl y C en medio de la descarga.

Para nuestro próximo comando, estamos adjuntando la opción -C. Por ejemplo,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
La descarga comenzó correctamente desde donde se detuvo.
Descargando más de un archivo
Debido a que cURL no tiene la forma más intuitiva de descargar múltiples archivos, hay dos métodos, cada uno con su propio compromiso.
Si los archivos que estás descargando están enumerados (por ejemplo, archivo1, archivo2, y así sucesivamente), puedes usar corchetes para obtener el rango completo de archivos y “#” dentro de la salida que especificas con la opción -o. Para hacer esto un poco menos confuso, aquí hay un ejemplo:
curl "http://example.com/file[1-5].zip" -o "#1_#2"Una forma más sencilla de hacer esto es con -O ( --remote-name). Esta opción hace que cURL descargue el archivo remoto en un archivo local con el mismo nombre. Dado que no tienes que especificar una salida, deberías usar este comando cuando la terminal esté abierta en el directorio donde deseas descargar los archivos.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"Si tienes una gran cantidad de archivos enumerados para descargar, --remote-name-all es una mejor opción para esto:
curl --remote-name-all "https://example.com/file[1-5].zip"Incluso podrías especificar archivos no enumerados provenientes del mismo sitio sin tener que volver a escribir la URL usando corchetes:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"Descargando con autenticación
Descarga archivos que requieran autenticación (por ejemplo, al obtener de un servidor FTP privado) con la opción -u. Cada solicitud de autenticación debe realizarse primero con el nombre de usuario y segundo con la contraseña, separando los dos con dos puntos. Aquí hay un ejemplo para simplificar las cosas:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zipEsto autenticará a nuestro amigo bonobo_bob en el servidor FTP y descargará el archivo en la carpeta de Descargas.
Dividiendo y fusionando archivos
Si por alguna razón deseas descargar un archivo grande y dividirlo en partes, puedes hacerlo con la opción --range de cURL. Con --range, debes especificar el byte en el que deseas comenzar hasta el que deseas finalizar. Si no especificas un final para el rango, simplemente descargará el resto del archivo.
En el comando a continuación, cURL descargará los primeros 100 MB de la imagen de instalación de Arch Linux:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoPara los siguientes 100 MB, usa --range 100000000-199999999, etc. Puedes encadenar estos comandos usando el operador &&:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \
curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoSi seguiste la estructura del comando anterior al pie de la letra, deberían aparecer ocho archivos donde le pediste a cURL que los descargara.
Para unir estos archivos, tendrás que usar el comando cat si estás en Linux o macOS así:
cat arch.part? > arch.isoPara Windows, tendrás que usar el comando copy así:
copy/b arch.part* arch.isoOtras características útiles
Hay muchas opciones y usos para cURL:
-#– Usa una barra de progreso para indicar cuánto has avanzado en lo que estás descargando. Ejemplo:curl -# https://asite.com/somefile.zip > ~/somefile.zip.-a– Pide a cURL que agregue a un archivo en lugar de sobrescribirlo. Ejemplo:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x.--head– Solo obtiene el encabezado de respuesta del servidor sin los datos de salida. Esto es útil cuando estás depurando un sitio web o echando un vistazo a las respuestas programadas del servidor a los clientes. Ejemplo:curl --head https://example-url.com.--limit-rate– Ordena una descarga con un ancho de banda limitado. Es útil en situaciones donde no quieres que cURL acapare todo el ancho de banda disponible en tu sistema. Un número simple se interpretará en bytes por segundo. K representa kilobytes por segundo; M representa megabytes por segundo. Ejemplo:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip.-o– Como se mencionó anteriormente, determina un archivo de salida que cURL debe usar. Ejemplo:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip.--proxy– Si deseas trabajar con un proxy, esta es la forma de hacerlo. Ejemplo:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.
cURL vs. Wget
Ambos fueron lanzados en el mismo año (1996), cURL y Wget son prácticamente programas hermanos para el observador casual. Sin embargo, al profundizar un poco más, puedes ver que estas dos hermanas tienen diferentes propósitos.
Wget
- Está completamente construido desde cero para obtener datos de Internet.
- No necesita las opciones
-Lo-ocomo cURL; ¡solo escribewget [url]y listo! - Puede descargar recursivamente para obtener todo en un directorio con la opción
-r. - Tiene todas las funciones que un usuario necesita para uso diario y atiende tareas de sysadmin cotidianas.
- (En Linux) No necesita muchas dependencias; todas deberían estar disponibles desde el principio.
También lee: Cómo instalar y usar wget en Mac
cURL
- Repertorio expansivo de opciones y funciones útiles para la recuperación remota.
- Soporta redes locales (LDAP) e impresoras de red (Samba).
- Funciona bien con bibliotecas de compresión gzip.
- Depende de libcurl, lo que permite a los desarrolladores escribir software o scripts bash que incluyan la funcionalidad de cURL.
En resumen, Wget es la “caja de herramientas de todos” para obtener cosas de Internet, mientras que cURL se expande sobre esto con un control más granular para usuarios poderosos y administradores de sistemas.
Preguntas frecuentes
1. Recibí un error de certificado en Linux. ¿Cómo lo arreglo?
Si recibiste un error que dice algo como “el emisor del certificado del par ha sido marcado como no confiable”, la forma más fácil de arreglar esto es reinstalando el paquete de certificados comunes en tu distribución.
Para sistemas basados en Debian/Ubuntu:
sudo apt reinstall ca-certificatesPara Fedora/CentOS/RHEL:
dnf reinstall ca-certificatesPara sistemas basados en Arch:
pacman -S ca-certificatesTen en cuenta que en Arch quizás quieras limpiar tu caché de paquetes usando pacman -Scc antes de reinstalar el paquete de certificados.
Si aún recibes este error, puede haber algo mal del lado del servidor.
2. ¿Es seguro ejecutar comandos cURL y bash juntos?
Aunque no es la forma más común de instalar aplicaciones de Linux, hay varios desarrolladores (como las personas detrás de NodeJS) que no te dan otra opción más que usar curl junto con un comando de acceso root que se ejecuta a través de bash (por ejemplo, curl [argumento] | sudo -E bash -) para instalar el software.
Puede parecer un poco aterrador, pero si las personas detrás de la aplicación son de confianza, es muy poco probable que rompas algo. Los actores maliciosos están por todas partes y pueden infiltrarse en repositorios como el AUR de Arch, así que instalar usando curl en combinación con comandos de acceso root no es generalmente más inseguro que hacerlo a través de tu gestor de paquetes.
3. ¿Puedo usar cURL con Tor?
¡Sí! Inicia el Tor Browser (o un servicio de tor independiente) y usa la opción --proxy. Tor te proporciona un proxy local que puedes usar para ocultar tu IP en otras aplicaciones. Aquí hay un ejemplo de cURL usado con Tor:
curl --proxy localhost:9050 http://example.comLos servicios de Tor independientes usarán 9050 como su puerto de escucha, mientras que el navegador Tor usa el puerto 9150.
Conclusión
cURL ha demostrado ser resistente ante el cambiante panorama del mundo de Linux, manteniendo su posición como una herramienta importante en el arsenal del usuario de terminal.
Si eres nuevo en la línea de comandos, consulta algunos de los comandos de Linux más útiles. Si simplemente deseas buscar en la web en lugar de descargar datos de Internet, también puedes navegar en la terminal.