कोष्ठक के साथ URL को कर्ल में पास करना


305

यदि मैं URL को कर्ल करने के लिए पास करने का प्रयास करता हूं जिसमें कोष्ठक शामिल हैं, तो यह एक त्रुटि के साथ विफल होता है:

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

हालाँकि, अगर मैं दोनों कोष्ठक से बचता हूँ, तो यह काम करता है:

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

दिलचस्प है, मैं केवल पहले ब्रैकेट से बचने के लिए एक बैकस्लैश का उपयोग करता हूं जो त्रुटि कोड 20497 के साथ चुपचाप विफल रहता है:

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

मेरा सवाल यह है कि सामान्य मामलों के लिए इसे कैसे ठीक किया जाए? क्या कोई तर्क है जो URLs से स्वचालित रूप से बच जाएगा, या वर्णों का वर्णन जो कर्ल करने से पहले बच जाना चाहिए?

जवाबों:


481

कोई बात नहीं, मैंने इसे डॉक्स में पाया:

-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.

10
मेरे लिए, यह काम नहीं किया। प्रत्येक स्क्वायर ब्रैकेट से पहले मुझे a \
_

@jesusperaltac मेरे लिए वही, macOS के साथ
जीन

मेरे लिए यह काम किया - ओएस एक्स हाई सीयर पर, कर्ल 7.54.0 (x86_64-apple-darwin17.0) libcurl / 7.54.0।
शेड

1
मेरे लिए @Jean @jesusperaltac अगर कमांड है तो यह विंडोज़ पर काम करती हैcurl -L -o <local_file_name> -g <url>
स्टीवन लियांग

मेरे लिए CentOS 7.1 काम किया। कर्ल संस्करण 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0)
20

0

ग्लोबिंग ब्रैकेट का उपयोग करता है, इसलिए उन्हें स्लैश के साथ भागने की आवश्यकता होती है \। वैकल्पिक रूप से, निम्न कमांड-लाइन स्विच ग्लोबिंग को अक्षम करेगा:

--globoff(या कम विकल्प संस्करण: -g)

उदाहरण के लिए:

curl --globoff https://www.google.com?test[]=1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.