Probar una API o diagnosticar un servidor web que devuelve un error 502 no debería requerir abrir un navegador ni lanzar una aplicación gráfica pesada. Aquí tienes ocho clientes HTTP de terminal para Linux, desde curl y HTTPie hasta xh, Hurl y Posting, con comandos de instalación y ejemplos prácticos.
Los clientes HTTP son herramientas que envían peticiones a servidores web y muestran las respuestas. La mayoría de usuarios de Linux los conocen primero como una forma de descargar archivos desde la línea de comandos, pero son igual de útiles para inspeccionar cabeceras de respuesta, probar APIs REST, seguir redirecciones y diagnosticar errores de servidores web y proxies inversos.
El reto está en elegir la herramienta adecuada para cada trabajo. curl puede manejar casi cualquier tarea HTTP, pero sus opciones de línea de comandos se vuelven largas cuando trabajas con APIs JSON.
Herramientas como HTTPie ofrecen una sintaxis más legible para probar APIs, mientras que las herramientas dedicadas de descarga son mejores para tareas como reanudar la descarga de una ISO de 4 GB.
En esta guía exploraremos ocho clientes HTTP de terminal, explicaremos qué hace mejor cada uno y mostraremos cómo instalarlos y usarlos con ejemplos del mundo real.
Tabla comparativa rápida
| Herramienta | Mejor para | Sintaxis | Dependencia | Salida coloreada |
|---|---|---|---|---|
| curl | Todo, scripts, servidores sin instalar nada | Flags clásicos | C (libcurl) | No por defecto |
| HTTPie | Pruebas de API diarias, legibilidad | clave=valor | Python | Sí |
| xh | HTTPie sin Python, contenedores | clave=valor | Rust (binario único) | Sí |
| curlie | HTTPie + opciones de curl | Híbrida | Go | Sí |
| Wget / Wget2 | Descargas y espejos de sitios | Flags clásicos | C | No |
| aria2 | Descargas grandes multi-conexión | Flags clásicos | C++ | No |
| Hurl | Tests de API en CI | Archivos .hurl | Rust (libcurl) | Sí |
| Posting | Exploración interactiva (TUI) | Interfaz visual | Python 3.11+ | Sí (TUI) |
1. curl
curl es la herramienta de línea de comandos con la que se compara casi cualquier otro cliente HTTP de esta lista. Es una utilidad y biblioteca (libcurl) para transferir datos usando URLs.
Soporta numerosos protocolos, incluidos HTTP, HTTPS, FTP, SFTP, SCP, IMAP, SMTP y LDAP, por lo que lo encontrarás en todas partes: servidores Linux, imágenes de contenedor, routers y reproductores multimedia.
Para los administradores de sistemas, la mayor ventaja de curl es su disponibilidad: viene instalado por defecto en la mayoría de sistemas Linux, lo que lo convierte en una herramienta fiable durante un incidente.
También te da control preciso sobre las peticiones: cabeceras, configuración TLS, proxies, timeouts y HTTP/2 o HTTP/3, dependiendo de cómo se haya compilado curl.
Instalación
En Ubuntu y Debian:
sudo apt install curl
En Arch Linux:
sudo pacman -S curl
Uso práctico
Un uso común de curl es comprobar las cabeceras de respuesta de un sitio web para verificar redirecciones, políticas de caché u otras configuraciones HTTP. La opción -I envía una petición HEAD y muestra las cabeceras sin descargar el cuerpo:
curl -I https://www.tecmint.com
Al probar una API, la opción --json facilita enviar payloads JSON, ya que establece las cabeceras Content-Type y Accept adecuadas y usa POST por defecto:
curl --json '{"name": "tecmint", "role": "admin"}' https://httpbin.org/post
⚠️ Nota de compatibilidad:
--jsonse introdujo en curl 7.82.0, así que no está disponible en el paquetecurl 7.81.0por defecto de Ubuntu 22.04. En esa versión, usa-H "Content-Type: application/json"junto con-dpara enviar el payload JSON:curl -H "Content-Type: application/json" \ -d '{"name": "tecmint", "role": "admin"}' \ https://httpbin.org/post
Ejemplos adicionales útiles
Seguir redirecciones y ver dónde acabas:
curl -IL https://example.com
Guardar la respuesta con un nombre de archivo y reanudar si se corta:
curl -C - -O https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso
Medir tiempos de conexión y respuesta (muy útil para diagnosticar latencia):
curl -o /dev/null -s -w 'DNS: %{time_namelookup}s\nConectar: %{time_connect}s\nTLS: %{time_appconnect}s\nPrimer byte: %{time_starttransfer}s\nTotal: %{time_total}s\n' https://example.com
2. HTTPie
Donde curl te da control total, HTTPie se centra en hacer que las peticiones de API sean fáciles de escribir y de leer. Proporciona dos comandos, http y https, usa una sintaxis simple clave=valor para datos JSON, e imprime las respuestas con colores y JSON formateado por defecto.
HTTPie también soporta cabeceras personalizadas, sesiones persistentes, subida de archivos y un sistema de plugins, lo que lo convierte en una herramienta cómoda para desarrolladores e ingenieros DevOps que prueban APIs todo el día. El proyecto también ofrece una aplicación de escritorio y web separada llamada HTTPie for Desktop si prefieres una interfaz gráfica.
Instalación
En Ubuntu y Debian (repositorios por defecto):
sudo apt install httpie
En Rocky Linux, AlmaLinux y RHEL, HTTPie viene del repositorio EPEL, así que habilita EPEL primero y luego instala el paquete. En Fedora, sáltate el primer comando porque HTTPie está en los repositorios por defecto:
sudo dnf install epel-release
sudo dnf install httpie
En Arch Linux:
sudo pacman -S httpie
Uso práctico
Con HTTPie instalado, puedes enviar la misma petición JSON del ejemplo de curl de una forma mucho más corta. HTTPie ve los elementos clave=valor, construye el cuerpo JSON y cambia el método a POST automáticamente:
http POST httpbin.org/post name=tecmint role=admin
Las sesiones son útiles cuando una API necesita un token de login en cada petición. La opción --session guarda cabeceras y cookies bajo un nombre, de modo que las peticiones posteriores pueden reutilizarlas sin pegar el token otra vez:
http --session=dev httpbin.org/headers Authorization:"Bearer YOUR_TOKEN"
http --session=dev httpbin.org/headers
La segunda petición envía la misma cabecera Authorization porque HTTPie la cargó del archivo de sesión dev.
Ejemplos adicionales útiles
Subir un archivo con un formulario multipart:
http --form POST httpbin.org/post file@/etc/hosts
Enviar parámetros de query string:
http GET httpbin.org/get search==powershell page==2
💡 Diferencia clave con curl: en HTTPie,
clave=valor→ cuerpo JSON,clave==valor→ query string,Cabecera:valor→ cabecera HTTP. Ese único detalle elimina la mitad de las dudas al probar APIs.
3. xh
Si te gusta la sintaxis de HTTPie pero quieres una alternativa más rápida y autónoma, xh merece la pena. Escrito en Rust, reimplementa buena parte de la interfaz de línea de comandos de HTTPie y se distribuye como un único ejecutable, lo que lo hace cómodo de instalar en servidores y usar en contenedores.
xh soporta HTTP/2 e incluye una opción --curl que imprime el comando curl equivalente en lugar de enviar la petición. Esto es útil cuando desarrollas y pruebas peticiones de API interactivamente con xh pero necesitas reproducirlas en un script que usa curl.
⚠️ Sin embargo,
xhno implementa todas las características de HTTPie, así que comprueba su compatibilidad antes de cambiar si dependes de características avanzadas o plugins.
Instalación
En Debian y Ubuntu:
sudo apt update
sudo apt install xh
En Arch Linux:
sudo pacman -S xh
En Fedora, el proyecto documenta la instalación a través de su repositorio COPR:
sudo dnf copr enable ducaale/xh
sudo dnf install xh
Para distribuciones sin un paquete adecuado, incluidas Rocky Linux, AlmaLinux y RHEL, puedes usar el script de instalación del proyecto o descargar un ejecutable precompilado desde la página oficial de releases de xh:
curl -sfL https://raw.githubusercontent.com/ducaale/xh/master/install.sh | sh
⚠️ Como con cualquier script que se canaliza directamente a una shell, revisa el script antes de ejecutarlo, especialmente en servidores de producción.
Uso práctico
Como xh sigue la sintaxis de petición de HTTPie, puedes enviar una petición POST con campos JSON usando un comando familiar y legible:
xh POST https://httpbin.org/post name=tecmint role=admin
Para imprimir el comando curl equivalente sin enviar la petición, añade --curl:
xh --curl POST https://httpbin.org/post name=tecmint role=admin
xh también proporciona un comando xhs que usa HTTPS por defecto. Por ejemplo, xhs example.com equivale a xh https://example.com.
💡 Si quieres la sintaxis legible de HTTPie sin instalar una herramienta basada en Python,
xhes una alternativa práctica, siempre que su conjunto de características cubra tus necesidades.
4. curlie
curlie adopta un enfoque diferente al de xh. En lugar de implementar su propio cliente HTTP, actúa como frontend de curl, combinando las opciones de curl con la sintaxis de petición estilo HTTPie y salida formateada.
Esto es útil cuando necesitas características específicas de curl (configuración TLS personalizada, opciones de conexión o soporte de protocolos) pero prefieres una forma más legible de construir peticiones HTTP. curlie también escribe las cabeceras de respuesta a stderr y hace streaming de la salida sin almacenar la respuesta completa en búfer, lo que lo hace útil para inspeccionar respuestas en streaming.
Instalación
curlie no está en los repositorios por defecto de la mayoría de distribuciones, así que la forma más fácil de instalarlo en cualquier sistema Linux es el instalador de Webi, que coloca el binario en tu directorio home sin necesidad de root:
curl -sS https://webinstall.dev/curlie | bash
⚠️ Revisa el instalador antes de ejecutarlo si necesitas verificar qué descarga y qué cambia.
Si ya tienes Go instalado, puedes instalar curlie directamente:
go install github.com/rs/curlie@latest
La instalación con Go coloca el ejecutable en tu directorio de binarios de Go configurado, normalmente ~/go/bin. Asegúrate de que ese directorio está en tu PATH.
Puedes encontrar métodos de instalación adicionales y binarios precompilados en el repositorio oficial de curlie.
Uso práctico
curlie acepta opciones de curl primero, luego un método opcional, la URL y elementos estilo HTTPie. En este ejemplo, -v es una flag normal de curl, mientras que name=tecmint es dato JSON estilo HTTPie:
curlie -v POST https://httpbin.org/post name=tecmint
Cuando se ejecuta interactivamente, curlie imprime con formato y colorea las respuestas JSON. También puedes forzar la salida JSON formateada con --pretty.
Como xh, curlie soporta --curl, que imprime el comando curl subyacente en lugar de ejecutar la petición:
curlie --curl POST https://httpbin.org/post name=tecmint
💡 Si quieres la sintaxis legible de HTTPie sin renunciar al acceso a las opciones de
curl,curliees una alternativa útil. Es especialmente práctico para depurar APIs, trabajar con respuestas en streaming y traducir peticiones legibles a comandoscurlpara scripts.
5. Wget y Wget2
Las herramientas hasta ahora se centran principalmente en peticiones HTTP y APIs, pero a veces necesitas descargar archivos de forma fiable o espejar un sitio web completo. Ahí es donde Wget sigue siendo útil. Soporta HTTP, HTTPS y FTP, puede reanudar descargas interrumpidas y sigue enlaces para recuperar contenido de un sitio web recursivamente.
Wget2 es el sucesor de Wget del proyecto GNU. Soporta HTTP/2, compresión y descargas multihilo, lo que puede hacer más rápidas las descargas grandes o recursivas. Sin embargo, Wget2 no es un reemplazo perfecto: algunas opciones se comportan de forma distinta, así que prueba los scripts que dependan de características específicas de Wget antes de cambiar.
Instalación
En Ubuntu y Debian, el Wget clásico suele estar preinstalado, y Wget2 está disponible como paquete separado:
sudo apt install wget wget2
En Fedora, Rocky Linux, AlmaLinux y RHEL, instala wget con dnf. En Fedora 40 y posteriores, esto arrastra Wget2 como proveedor del comando wget:
sudo dnf install wget
Fedora también empaqueta el ejecutable principal de Wget2 por separado. Los nombres de paquete y la disponibilidad varían entre versiones de Fedora y distribuciones Enterprise Linux, así que comprueba los repositorios de tu distribución antes de asumir que el mismo comando funciona en Rocky Linux, AlmaLinux o RHEL.
En Arch Linux, instala ambas herramientas desde los repositorios oficiales:
sudo pacman -S wget wget2
Uso práctico
La opción -c le dice a Wget que continúe un archivo parcialmente descargado en lugar de descargarlo de nuevo desde el principio, siempre que el servidor soporte reanudación:
wget -c https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso
💡 Usa el nombre de archivo actual que aparezca en la página oficial de descarga de Ubuntu 24.04 al elegir una ISO. Comprueba el checksum publicado cuando la integridad de la descarga importe.
Con Wget2, la opción --max-threads controla cuántos archivos se descargan a la vez durante una descarga recursiva, que es donde se nota su ventaja de velocidad:
wget2 --max-threads=8 --recursive --no-parent https://example.com/docs/
⚠️ Reemplaza la URL de ejemplo por un directorio real de documentación. Antes de espejar un sitio web público, comprueba sus reglas de
robots.txt, términos de uso y límites de carga del servidor.
Para un solo archivo grande, la opción de reanudación de Wget es cómoda. Para descargas recursivas con muchos archivos, el paralelismo y el soporte HTTP/2 de Wget2 pueden ofrecer una ventaja de rendimiento útil.
Ejemplo adicional: descarga con nombre personalizado y reintentos
wget -c --tries=5 --timeout=30 -O ubuntu-24.04.iso \
https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso
💡
--triesy--timeoutson la diferencia entre una descarga que sobrevive a una red inestable y una que falla a la primera de cambio.
6. aria2
Wget2 ejecuta varias descargas a la vez, pero cada archivo sigue viniendo por una sola conexión. aria2 va un paso más allá y divide un solo archivo en múltiples conexiones, e incluso entre múltiples espejos, lo que puede hacer una descarga grande mucho más rápida cuando el servidor limita la velocidad por conexión.
aria2 soporta HTTP, HTTPS, FTP, SFTP, BitTorrent y Metalink, y puede verificar checksums de archivos automáticamente. También tiene una interfaz JSON-RPC, por lo que muchos gestores de descargas y frontends web lo usan como motor. Su última versión es la 1.37.0, y aunque las versiones salen despacio, la herramienta sigue empaquetada activamente por las principales distribuciones.
Instalación
En Ubuntu y Debian:
sudo apt install aria2
En Rocky Linux, AlmaLinux y RHEL, aria2 viene de EPEL, que puede que ya tengas habilitado por HTTPie:
sudo dnf install epel-release
sudo dnf install aria2
En Arch Linux:
sudo pacman -S aria2
Uso práctico
La opción -x establece el número máximo de conexiones a un servidor y -s establece en cuántas piezas se divide el archivo, así que este comando descarga un archivo en ocho conexiones:
aria2c -x 8 -s 8 https://releases.ubuntu.com/24.04/ubuntu-24.04.3-live-server-amd64.iso
aria2 acepta hasta 16 conexiones por servidor con -x, pero algunos servidores bloquean o ralentizan a los clientes que abren muchas conexiones, así que empieza con un número menor en servidores que no controlas.
Ejemplo adicional: descarga multi-espejo
aria2c -x 4 -s 4 \
https://mirror1.example.com/file.iso \
https://mirror2.example.com/file.iso \
https://mirror3.example.com/file.iso
💡
aria2reparte las piezas entre los espejos y reconstruye el archivo al final. Cuando un espejo va lento, los otros compensan. Eso es lo que ningún cliente HTTP genérico hace.
7. Hurl
La mayoría de clientes HTTP de línea de comandos envían una petición y muestran la respuesta, dejándote a ti decidir si es correcta. Hurl, desarrollado por Orange, va un paso más allá: ejecuta peticiones HTTP definidas en archivos de texto plano y comprueba las respuestas contra aserciones que especifiques. Esto lo hace útil para pruebas de API, comprobaciones de regresión y tests automatizados en pipelines de CI.
Un archivo Hurl puede encadenar múltiples peticiones, capturar valores como tokens de autenticación de una respuesta y reutilizarlos en peticiones posteriores, y afirmar sobre códigos de estado, cabeceras y campos JSON.
Hurl está construido sobre libcurl, así que sus protocolos soportados y capacidades TLS dependen de las características de libcurl disponibles en el build.
Instalación
En Ubuntu y Debian, puedes instalar Hurl usando el paquete .deb proporcionado en la página de releases del proyecto en GitHub. El siguiente ejemplo usa Hurl 8.0.1, la última versión listada en el momento de escribir:
VERSION=8.0.1
curl --location --remote-name \
https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
💡 Consulta la página oficial de releases de Hurl para versiones más recientes antes de publicar o instalar. Este paquete está pensado para sistemas Debian de 64 bits compatibles.
En Arch Linux:
sudo pacman -S hurl
En Rocky Linux, AlmaLinux y RHEL, puedes usar un tarball precompilado de Linux o compilar Hurl usando Cargo:
cargo install --locked hurl
⚠️ El binario precompilado oficial de Linux requiere glibc 2.35 o posterior. Los sistemas estándar RHEL 10 cumplen ese requisito, mientras que los sistemas RHEL 9 con glibc 2.34 no. En RHEL 9, usa un método de compilación compatible o ejecuta la imagen de contenedor oficial:
docker run --rm ghcr.io/orange-opensource/hurl:8.0.1 --version
Consulta la guía oficial de instalación para los últimos paquetes, requisitos previos y opciones de instalación.
Crear un test de API
Crea un archivo llamado api-check.hurl con tu editor de texto preferido:
nano api-check.hurl
Añade el siguiente test:
GET https://httpbin.org/get
HTTP 200
[Asserts]
header "Content-Type" contains "application/json"
jsonpath "$.url" == "https://httpbin.org/get"
Guarda el archivo y sal del editor. Esto es lo que hace cada parte:
GET https://httpbin.org/getenvía una petición GET al endpoint.HTTP 200afirma que el código de estado de la respuesta es 200. Un estado distinto hace fallar el test.[Asserts]inicia la sección que contiene comprobaciones adicionales de la respuesta.header "Content-Type" contains "application/json"verifica que el tipo de contenido de la respuesta incluyeapplication/json.jsonpath "$.url" == "https://httpbin.org/get"extrae el campourlde la respuesta JSON y lo compara con la URL esperada.
Ejecutar el test
Ejecuta el archivo en modo test:
hurl --test api-check.hurl
Hurl ejecuta la petición, evalúa las aserciones y muestra un resumen del test en lugar de imprimir el cuerpo completo de la respuesta. Una ejecución correcta reporta el test como pasado; un fallo de aserción identifica la comprobación fallida y hace que Hurl salga con un estado distinto de cero.
💡 Ese código de salida hace que Hurl sea adecuado para scripts de shell, cron jobs y pipelines de CI. Puedes programar comprobaciones recurrentes de API o hacer que un pipeline de despliegue falle cuando un endpoint deja de devolver la respuesta esperada.
Ejemplo adicional: encadenar peticiones y capturar tokens
POST https://api.example.com/login
Content-Type: application/json
{
"user": "admin",
"pass": "{{password}}"
}
HTTP 200
[Captures]
token: jsonpath "$.access_token"
GET https://api.example.com/protected
Authorization: Bearer {{token}}
HTTP 200
[Asserts]
jsonpath "$.role" == "admin"
💡 Pasas
{{password}}desde fuera conhurl --variable password=...o con--variables-file secrets.env, sin dejar secretos en el archivo.hurlque subes a Git.
9. Posting: construye y guarda peticiones en el terminal
Hurl es genial cuando ya sabes qué probar, pero cuando estás explorando una API desconocida, es más fácil trabajar interactivamente. Posting es una interfaz de usuario de terminal (TUI), es decir, una aplicación que corre dentro de tu terminal pero tiene paneles, menús y navegación por teclado como un programa de escritorio, así que se siente similar a Postman sin salir del terminal.
Posting almacena las peticiones como archivos YAML planos en una carpeta de colección, lo que significa que puedes versionarlas en Git junto a tu proyecto. Soporta entornos y variables, autocompletado, teclas estilo Vim, scripts Python de pre-petición y post-respuesta, e importación de peticiones desde comandos curl, colecciones de Postman y especificaciones OpenAPI.
También puedes exportar cualquier petición como un comando curl. Es la herramienta que reemplaza a HTTP Prompt en esta lista, y también funciona bien por SSH en un servidor remoto.
Instalación
Posting necesita Python 3.11 o posterior, que es más nuevo que el Python por defecto en RHEL 9 y Ubuntu 22.04. El proyecto recomienda instalarlo con uv, un gestor de paquetes de Python que descarga automáticamente la versión correcta de Python para la herramienta, así que este método funciona igual en todas las distribuciones:
curl -LsSf https://astral.sh/uv/install.sh | sh
Después de la instalación, reinicia tu terminal o carga la configuración del shell para que uv esté disponible. Luego instala Posting:
uv tool install --python 3.13 posting
⚠️ Revisa el instalador de
uvantes de ejecutarlo, igual que con cualquier script canalizado a una shell.
Crear una colección y lanzar Posting
Una colección es un directorio que contiene tus peticiones guardadas. Crea uno antes de lanzar Posting con la opción --collection:
mkdir -p ~/api-requests
posting --collection ~/api-requests
El comando mkdir -p asegura que el directorio existe, evitando el error que obtendrías si pasases una ruta inexistente a Posting.
Uso práctico: importar desde curl
Cuando Posting se abre, puedes introducir una URL en la barra de petición y elegir el método HTTP. Para ahorrar tiempo, pega un comando curl completo en la barra de URL. Posting lo convierte en una petición y rellena el método, las cabeceras y el cuerpo donde esté soportado.
Por ejemplo, pega:
curl -X POST https://httpbin.org/post \
-H "Content-Type: application/json" \
-d '{"name":"tecmint","role":"admin"}'
Envía la petición e inspecciona la respuesta en el panel de respuesta de Posting. Cuando estés satisfecho, guarda la petición en tu colección. Posting la almacena como archivo YAML que puedes inspeccionar, editar y versionar en Git.
Atajos y productividad
Ctrl + Pabre la paleta de comandos.Ctrl + Sguarda la petición actual en la colección.Ctrl + Eexporta la petición como comandocurl.- Navegación estilo Vim (
hjkl) en los paneles, configurable. - Entornos con variables como
{{base_url}}y{{token}}para no repetir valores.
Consejos para elegir el cliente HTTP adecuado
Con ocho herramientas para elegir, la forma más fácil de decidir es emparejar la herramienta con el trabajo en lugar de intentar usar una sola para todo.
Para scripts, cron jobs y cualquier cosa que deba correr en un servidor que no configuraste tú, quédate con curl, porque ya está instalado y sus opciones no cambian entre versiones.
Para trabajo diario con APIs en tu propio escritorio, HTTPie o xh te ahorrarán muchísima escritura, y xh es la mejor elección para contenedores y servidores mínimos, ya que es un solo binario sin dependencia de Python.
Para descargas, Wget es suficiente para archivos individuales y espejo de sitios, mientras que aria2 es la mejor opción para archivos grandes en servidores que limitan la velocidad por conexión.
Cuando quieras comprobaciones que se ejecuten repetidamente, como confirmar que una API sigue devolviendo los datos correctos después de cada despliegue, escribe tests como archivos Hurl en lugar de scripts de shell llenos de comandos grep.
Para explorar APIs desconocidas, Posting ofrece la comodidad de Postman sin salir del terminal y versionando las peticiones en Git.
⚠️ Seguridad: tokens y contraseñas en la línea de comandos
Ten cuidado con tokens y contraseñas en la línea de comandos, sea cual sea la herramienta. Cualquier cosa que escribas como argumento acaba en el historial de tu shell y puede ser visible para otros usuarios a través de ps mientras el comando se ejecuta.
Almacena secretos en su lugar en:
- una variable de entorno (
export TOKEN=...), - un archivo de sesión de HTTPie,
- un
--variables-filede Hurl, - un archivo de entorno de Posting con permisos estrictos (
chmod 600).
# Bien: el token no aparece en el historial ni en ps
curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me
# Mal: el token queda en el historial y es visible con ps
curl -H "Authorization: Bearer sk_live_abc123..." https://api.example.com/me
💡 En Bash puedes evitar que un comando se guarde en el historial prefijándolo con un espacio, siempre que tengas
HISTCONTROL=ignorespaceoHISTIGNORE=" *"configurado.
Conclusión
curl sigue siendo el cliente HTTP que todo usuario de Linux debería conocer, pero herramientas como HTTPie, xh y curlie hacen el trabajo con APIs mucho más rápido, mientras que Wget2 y aria2 manejan descargas grandes mejor que un cliente de propósito general.
Hurl y Posting cubren los huecos para testing automatizado de APIs y exploración interactiva, y ambos almacenan las peticiones en archivos de texto plano que puedes guardar en Git.
🎁 Anexo: mejoras y actualizaciones sugeridas en esta versión
Añadidas a esta traducción, fruto del análisis del artículo original:
- Tabla comparativa rápida al inicio: el original no la incluía; permite elegir herramienta en 10 segundos según el caso de uso, la dependencia y el tipo de salida.
- Comando de medición de tiempos de
curl(-wcontime_namelookup,time_connect, etc.): el original lo menciona de pasada, pero es una de las aplicaciones más útiles decurlen diagnóstico real y merece un ejemplo completo. - Aclaración de la sintaxis de HTTPie (
clave=valorvsclave==valorvsCabecera:valor): es la confusión número uno de quienes vienen decurl, y resolverla en una línea ahorra media hora de prueba y error. - Ejemplo de descarga multi-espejo con
aria2: el original explica el concepto pero no muestra el caso real de pasar varias URLs; añadido porque es dondearia2brilla de verdad. - Ejemplo de encadenado de peticiones en Hurl con
[Captures]y{{token}}: el original solo muestra aserciones básicas; el caso de login → petición autenticada es el caso real de CI. - Advertencia sobre
--jsonde curl en Ubuntu 22.04 ampliada con la versión exacta (7.82.0introdujo la opción, el paquete de 22.04 trae7.81.0), para que nadie pierda tiempo pensando que sucurlestá roto. - Nota sobre
HISTCONTROL=ignorespaceen Bash: complementa el consejo de seguridad del original con el mecanismo concreto para no dejar secretos en el historial. - Ejemplo de
wgetcon--triesy--timeout: convierte una descarga frágil en una robusta, y es la diferencia práctica entre “funciona en mi red” y “funciona en cualquier red”. - Atajos de Posting (
Ctrl+P,Ctrl+S,Ctrl+E, navegación Vim): el original describe la TUI pero no da los atajos que hacen que merezca la pena usarla frente a copiar y pegar. - Sugerencia añadida: prueba
httpie-go(también conocido comoht) si quieres la sintaxis de HTTPie en un binario Go sin Python y sin las limitaciones dexh; es la alternativa que falta en la lista original. - Sugerencia añadida:
xh --offlinepara previsualizar la petición que se enviará sin hacer red, útil en entornos sin conectividad. - Sugerencia añadida:
curl --resolvepara probar un dominio contra una IP concreta sin tocar/etc/hosts, imprescindible al diagnosticar cambios de DNS o balanceadores. - Sugerencia añadida:
wget --spidercomo comprobación rápida de enlaces sin descargar nada, una alternativa ligera acurl -Ien scripts de monitorización.
Descubre más desde CIBERED
Suscríbete y recibe las últimas entradas en tu correo electrónico.
