Przekazywanie adresu URL z nawiasami do zwijania się

305

Jeśli spróbuję przekazać adres URL do zwijania się, który zawiera nawiasy, błąd kończy się niepowodzeniem:

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

Jeśli jednak uniknę obu nawiasów, wydaje się, że działa:

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

Co ciekawe, używam ukośnika odwrotnego, aby uciec tylko do pierwszego nawiasu klamrowego po cichu z kodem błędu 20497:

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

Moje pytanie brzmi: jak to naprawić w ogólnych przypadkach? Czy istnieje argument, który automatycznie ucieka z adresów URL, lub opis znaków, które należy uciec przed przejściem do zwijania?

chaimp
źródło

Odpowiedzi:

481

Nieważne, znalazłem to w dokumentacji:

-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
źródło
10
Dla mnie to nie zadziałało. Musiałem dodać \ przed każdym nawiasem kwadratowym
jesusperaltac
@jesusperaltac To samo dla mnie, z macOS
Jean
Dla mnie to zadziałało - na OS X High Sierr, curl 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0.
Odcień
1
@Jean @jesusperaltac dla mnie to działa w systemie Windows, jeśli polecenie jestcurl -L -o <local_file_name> -g <url>
Steven Liang
Pracował dla mnie CentOS 7.1. Wersja Curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
PatS
0

Globbing używa nawiasów, stąd potrzeba ucieczki przed nimi ukośnikiem \. Alternatywnie następujący przełącznik wiersza polecenia wyłączy globbing:

--globoff(lub wersja short-opcja: -g)

Dawny:

curl --globoff https://www.google.com?test[]=1
znak
źródło