Pasar una URL con corchetes para rizar

305

Si intento pasar una URL a curl que contiene corchetes, falla con un error:

$ curl 'http://www.google.com/?TEST[]=1'
curl: (3) [globbing] illegal character in range specification at pos 29

Sin embargo, si escapo de ambos corchetes, parece funcionar:

$ curl 'http://www.google.com/?TEST\[\]=1'

Curiosamente, uso una barra invertida para escapar solo del primer paréntesis que falla en silencio con el código de error 20497:

$ curl 'http://www.google.com/?TEST\[]=1'
$ echo $!
20497

Mi pregunta es cómo solucionar esto para casos generales. ¿Existe un argumento que escapará de las URL automáticamente, o una descripción de los caracteres que deben escaparse antes de pasar a curl?

chaimp
fuente

Respuestas:

482

No importa, lo encontré en los documentos:

-g/--globoff
              This  option  switches  off  the "URL globbing parser". When you set this option, you can
              specify URLs that contain the letters {}[] without having them being interpreted by  curl
              itself.  Note  that  these  letters  are not normal legal URL contents but they should be
              encoded according to the URI standard.
chaimp
fuente
10
Para mí no funcionó. Tuve que agregar un \ antes de cada corchete
jesusperaltac
@jesusperaltac Lo mismo para mí, con macOS
Jean
Para mí funcionó: en OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Sombra
1
@Jean @jesusperaltac para mí funciona en Windows si el comando escurl -L -o <local_file_name> -g <url>
Steven Liang
Trabajó para mí CentOS 7.1. Curl versión 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS
0

Globbing usa corchetes, de ahí la necesidad de escapar de ellos con una barra \. Alternativamente, el siguiente interruptor de línea de comandos deshabilitará el globbing:

--globoff(o la versión corta-opción: -g)

Ex:

curl --globoff https://www.google.com?test[]=1
marca
fuente