El comando curl es una herramienta potente y versátil que permite transferir datos hacia o desde un servidor desde la terminal. Aunque se utiliza principalmente en Linux, también está disponible en otros sistemas operativos.
Además, curl es compatible con numerosos protocolos, como HTTP, HTTPS, FTP y SFTP. Por esta razón, se emplea habitualmente para descargar archivos, consultar páginas web, probar servidores e interactuar con API REST.
Muchos usuarios comparan curl con wget. Sin embargo, aunque ambos comandos permiten descargar contenido, no funcionan exactamente de la misma manera. Por un lado, curl ofrece un mayor control sobre las solicitudes, los encabezados, la autenticación y los datos enviados. Por otro lado, wget resulta especialmente cómodo para realizar descargas recursivas o mantener procesos de descarga en segundo plano.
Por tanto, curl es una excelente opción para desarrolladores, administradores de sistemas y usuarios que necesitan trabajar con servicios web desde la terminal.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Utilidad del comando curl
El comando curl destaca por su flexibilidad. Entre sus principales ventajas se encuentran las siguientes:
- Ligero: no necesita un navegador ni una interfaz gráfica.
- Automatización: puede integrarse fácilmente en scripts de shell.
- Interoperabilidad: es compatible con diferentes protocolos y servicios.
- Depuración: permite revisar encabezados, respuestas y errores de servidores.
- Integración con API: facilita el envío de solicitudes GET, POST, PUT o DELETE.
Además, puede combinarse con otras herramientas de Linux para procesar las respuestas obtenidas.
Sintaxis básica comando curl
La sintaxis general es la siguiente:
curl [opciones] [URL]En esta estructura:
- opciones permite modificar el comportamiento del comando.
- URL representa la dirección del servidor o recurso con el que se quiere interactuar.
Ejemplos comunes
- Descargar un archivo
Para descargar un archivo y conservar su nombre original, utiliza la opción -O:
curl -O https://example.com/archivo.txt
#-O: Guarda el archivo con su nombre original.- Hacer una solicitud GET
Por defecto, curl utiliza el método GET:
curl https://api.example.com/datos
#Por defecto, curl utiliza el método GET para recuperar datos.- Enviar una solicitud POST
Para enviar información mediante una solicitud POST, utiliza -d:
curl -X POST -d "nombre=Juan&edad=30" https://www.ejemplo.com/api
#-X POST: Especifica el método HTTP.
#-d: Envía datos en el cuerpo de la solicitud.- Enviar encabezados (Headers)
La opción -H permite añadir encabezados personalizados:
curl -H "Authorization: Bearer token123" https://api.example.com/seguro
#-H: Añade un encabezado personalizado.- Guardar la salida en un archivo
curl https://example.com -o salida.html
#-o: Guarda la salida en un archivo específico.- Seguir redirecciones
curl -L https://example.com
#-L: Sigue redirecciones HTTP 3xx.- Usar Autenticación
curl -u usuario:contraseña https://example.com/protegido
#-u: Especifica credenciales de usuario.- Descargar con barra de progreso
curl -# -O https://example.com/archivo_grande.zip
#-#: Muestra una barra de progreso.- Enviar encabezado en formato JSON
Cuando una API espera información en formato JSON, es necesario indicar el tipo de contenido:
curl -X GET -H "Content-Type: application/json" https://api.example.com/test- Subir un Archivo
curl -T mi_archivo.txt https://www.ejemplo.com/upload/nuevo_nombre.txt
#-T: Sube el archivo especificado.Opciones clave comando curl
- -I: Solo obtiene encabezados (solicitud HEAD).
curl -I https://example.com- -v: Salida detallada, mostrando encabezados de solicitud y respuesta.
curl -v https://example.com- -k: Ignora errores de certificados SSL
curl -k https://example.com- –retry: Reintenta solicitudes fallidas.
curl --retry 3 https://example.com- –data-raw: Envía datos en bruto en el cuerpo de una solicitud.
curl -X POST --data-raw '{"clave":"valor"}' -H "Content-Type: application/json" https://api.example.comEjemplo de interacción con una API REST
Supongamos que trabajas con una API que requiere autenticación y devuelve respuestas en JSON:
En primer lugar, se envían las credenciales para obtener un token:
curl -X POST -d "usuario=admin&contraseña=secreta" https://api.example.com/autenticarA continuación, el token recibido puede utilizarse para consultar un recurso protegido:
curl -H "Authorization: Bearer tu_token_aquí" https://api.example.com/datosPor tanto, curl permite completar procesos de autenticación y consulta sin necesidad de utilizar una aplicación gráfica.
Buenas prácticas
En primer lugar, utiliza -v o –trace cuando necesites diagnosticar problemas de conexión.
Además, evita emplear -k salvo que estés trabajando en un entorno de pruebas controlado.
Asimismo, comprueba siempre la dirección antes de enviar credenciales, tokens o información sensible.
Por otro lado, cuando automatices solicitudes, valida tanto el código de estado HTTP como el contenido de la respuesta.
Finalmente, guarda las contraseñas y los tokens en variables de entorno o gestores de secretos, en lugar de escribirlos directamente dentro de los scripts.
Ejemplo en video
Para complementar esta guía, hemos preparado un video donde se muestra paso a paso cómo usar el comando curl en Linux.
De este modo, podrás ver de forma práctica algunos de los ejemplos explicados en el artículo:
