जवाबों:
-s
प्रगति मीटर को हटाने के लिए (मौन) विकल्प जोड़ें , फिर प्रतिक्रिया बॉडी के समान ही fd पर वर्बोज़ आउटपुट प्राप्त करने के लिए stdout पर पुनर्निर्देशित करें
curl -vs google.com 2>&1 | less
2>&1
।
आपके URL में शायद ampersands है। मुझे भी यह समस्या थी, और मुझे महसूस हुआ कि मेरा URL ampersands (CGI वैरिएबल्स पास होने से) से भरा था और इसलिए सब कुछ एक अजीब तरीके से बैकग्राउंड में भेजा जा रहा था और इस तरह ठीक से रीडायरेक्ट नहीं हो रहा था। यदि आप URL के चारों ओर उद्धरण डालते हैं तो इसे ठीक कर देगा।
ऊपर दिया गया जवाब मेरे काम नहीं आया, आखिरकार इस वाक्य रचना में क्या था:
curl https://${URL} &> /dev/stdout | tee -a ${LOG}
टी आउटपुट को स्क्रीन पर रखता है, लेकिन इसे मेरे लॉग में भी जोड़ता है।
&> /dev/stdout
निश्चित रूप से लापता हिस्सा था, धन्यवाद
यदि आपको किसी फ़ाइल में आउटपुट की आवश्यकता है तो आप एक अनुप्रेषित का उपयोग कर सकते हैं:
curl https://vi.stackexchange.com/ -vs >curl-output.txt 2>&1
कृपया सुनिश्चित करें कि फ्लिप करने नहीं हो >curl-output.txt
और 2>&1
है, जो होगा की वजह से काम नहीं बैश के पुनर्निर्देशन व्यवहार ।
मुझे एक ही बात मिली: कर्ल अपने आप को STDOUT में प्रिंट कर लेगा, लेकिन दूसरे प्रोग्राम में नहीं जा सकता।
सबसे पहले, मुझे लगा कि मैंने पहले आउटपुट को इको करने के लिए xargs का उपयोग करके इसे हल किया था:
curl -s ... <url> | xargs -0 echo | ...
लेकिन फिर, जैसा कि टिप्पणियों में बताया गया है, यह xargs भाग के बिना भी काम करता है, इसलिए -s
(साइलेंट मोड) STDOUT को बाहरी प्रगति आउटपुट को रोकने की कुंजी है:
curl -s ... <url> | perl -ne 'print $1 if /<sometag>([^<]+)/'
उपरोक्त उदाहरण <sometag>
कर्ल स्टेटमेंट के XML आउटपुट से सरल सामग्री (जिसमें कोई एम्बेडेड टैग नहीं है) को पकड़ लेता है ।
बस मेरे 2 सेंट। नीचे दिए गए आदेश को चाल करना चाहिए, जैसा कि पहले उत्तर दिया गया था
curl -vs google.com 2>&1
हालाँकि अगर किसी फाइल को आउटपुट प्राप्त करने की आवश्यकता है,
curl -vs google.com > out.txt 2>&1
कार्य करना चाहिए।
यह सरल उदाहरण दिखाता है कि कर्ल आउटपुट को कैसे कैप्चर किया जाए, और इसे बैश स्क्रिप्ट में उपयोग किया जाए
function main
{
\curl -vs 'http://google.com' 2>&1
# note: add -o /tmp/ignore.png if you want to ignore binary output, by saving it to a file.
}
# capture output of curl to a variable
OUT=$(main)
# search output for something using grep.
echo
echo "$OUT" | grep 302
echo
echo "$OUT" | grep title
curl -v url 2>&1
, तो त्रुटियों को सही ढंग से मेरे लिए मानक आउटपुट पर पुनर्निर्देशित किया जाता है।