कर्ल रिस्पांस बॉडी के अंत में स्वचालित रूप से न्यूलाइन जोड़ें


234

यदि कर्ल अनुरोध के लिए HTTP प्रतिसाद निकाय में एक अनुगामी न्यूलाइन नहीं होती है, तो मैं वास्तव में कष्टप्रद स्थिति के साथ समाप्त होता हूं, जहां शेल प्रॉम्प्ट लाइन के बीच में है, और भागने में गड़बड़ है कि जब मैंने आखिरी कर्ल लगाया था स्क्रीन पर कमांड, उस कर्ल कमांड से वर्णों को हटाना गलत वर्णों को हटाता है।

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

[root@localhost ~]# curl jsonip.com
{"ip":"10.10.10.10","about":"/about"}[root@localhost ~]#

क्या एक चाल है जिसका उपयोग मैं स्वतः कर्ल प्रतिक्रिया के अंत में एक नई पंक्ति जोड़ने के लिए कर सकता हूं, स्क्रीन के बाएं किनारे पर शीघ्र वापस लाने के लिए?


इनमें से कोई भी उत्तर मेरे लिए काम नहीं करता है, जो भी मेरे साइबरविन के कर्ल के संस्करण के साथ है; केवल गूंज कथन में पूरे कर्ल कमांड को लपेटता है, उदाहरण के लिए echo "$(curl localhost:8001/api)", इस उत्तर को फिर से लिखें
एलेक्स हॉल

जवाबों:


418

मैन फाइल से:

स्क्रिप्ट प्रोग्रामर को कर्ल की प्रगति के बारे में जानने के लिए बेहतर अनुमति देने के लिए, the -w / - राइट-आउट विकल्प पेश किया गया था। इसका उपयोग करके, आप यह बता सकते हैं कि पिछले हस्तांतरण से कौन सी जानकारी आप निकालना चाहते हैं।

कुछ पाठों के साथ डाउनलोड की गई बाइट्स की मात्रा और एक नई पंक्ति को प्रदर्शित करने के लिए:

curl -w 'We downloaded %{size_download} bytes\n' www.download.com

इसलिए अपनी ~/.curlrcफ़ाइल में निम्न जोड़ने का प्रयास करें :

-w "\n"

46
आप निम्न कमांड चला सकते हैं जो आपके लिए है:echo '-w "\n"' >> ~/.curlrc
tbraun

5
मैं हमेशा -w "\n"हर कर्ल कमांड में मैन्युअल रूप से जोड़ता हूं और टीआईएल ~/.curlrcमौजूद है!
झुओयुन वेई

2
यह विंडोज पर गिट-बैश के तहत काम नहीं कर सकता है; मैंने -w "\nKLJLJKLJ LJKLLKJ"अपने साथ जोड़ा ~/.curlrcऔर एक कर्ल चलाया और न तो एक नई लाइन या अजीब चरित्र प्राप्त किए।
जुल्म

@jcollum कुछ विंडोज पोर्ट _ओवर पसंद करते हैं .। संभावना है कि आपके कर्ल की तलाश है ~/_curlrcऔर परिणामस्वरूप echo '-w "\n"' >> ~/_curlrcसंभवतः काम करेगा। यह मेरे लिए करता है। btw: कर्ल
अनकैप्ड व्हॉट्सएप

कमांड लाइन का उपयोग करने -w "\n"या ; echoअपने संशोधन के साथ जोड़ने में मूल्य है .curlrc। यदि आप अपने कर्लकोन को संशोधित करते हैं, तो प्रतिक्रिया स्क्रिप्ट के अंत में कुछ स्क्रिप्ट नहीं टूट सकती हैं। मैं व्यक्तिगत रूप से आरसी को संशोधित करने पर कमांड लाइन पर जोड़ के साथ रहना होगा।
जेसन

99

उसकी कोशिश करो :

curl jsonip.com; echo 

आउटपुट

{"ip":"x.x.x.x","about":"/about"}

यह इतना आसान है;)

(और कर्ल कमांड तक सीमित नहीं है, लेकिन सभी कमांड जो एक नई पंक्ति के साथ समाप्त नहीं होते हैं)


3
क्या स्क्रिप्ट में इसे लपेटने का कोई तरीका है या उपनाम या कुछ भी समान है? हर पंक्ति के अंत में टाइपिंग "गूंज" थकाऊ हो सकती है, और मुझे लगता है कि यह किसी भी तरह से स्वचालित होने में सक्षम होना चाहिए।
मैथ्यू जी

SO पर, कुछ खोज प्रयास प्रदान करना बेहतर है। खोजने के लिए यह कैसे एक उपनाम या स्क्रिप्ट में स्पष्ट है।
गिलेस क्वांट

2
ध्यान दें कि इको कमांड जोड़ने से कर्ल कमांड से बाहर निकलने का कोड साफ हो जाता है। सबसे लोकप्रिय उत्तर में सुझाए गए कर्ल को -w "\ n" विकल्प निरीक्षण के लिए कर्ल निकास कोड उपलब्ध रखता है।
ब्रैडॉक्स 17

14

अधिक जानकारी के लिए और साथ ही कर्ल के बाद एक साफ नई लाइन के लिए

~/.curlrc

-w "\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\"%{content_type}\"\n"

(अधिक विकल्प यहां उपलब्ध हैं )

redirect_urlअनुरोध रिडायरेक्ट नहीं होने पर रिक्त हो जाएगा या आप रीडायरेक्ट -Lका पालन करने के लिए उपयोग करते हैं।

उदाहरण आउटपुट:

~ ➤  curl https://www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.uk/?gfe_rd=cr&amp;ei=FW">here</A>.
</BODY></HTML>

status=302 https://www.google.co.uk/?gfe_rd=cr&ei=FW size=262 time=0.044209 content-type="text/html; charset=UTF-8"
~ ➤  

संपादित करें , चीजों को अधिक पठनीय बनाने के लिए आप एएनएसआई रंगों को -wलाइन में जोड़ सकते हैं , यह सीधे लिखना आसान नहीं है, लेकिन यह स्क्रिप्ट ~/.curlrcरंगों के साथ एक फ़ाइल उत्पन्न कर सकती है ।

#!/usr/bin/env python3
from pathlib import Path
import click
chunks = [
    ('status=', 'blue'),
    ('%{http_code} ', 'green'),
    ('%{redirect_url} ', 'green'),
    ('size=', 'blue'),
    ('%{size_download} ', 'green'),
    ('time=', 'blue'),
    ('%{time_total} ', 'green'),
    ('content-type=', 'blue'),
    ('\\"%{content_type}\\"', 'green'),
]
content = '-w "\\n'
for chunk, colour in chunks:
    content += click.style(chunk, fg=colour)
content += '\\n"\n'

path = (Path.home() / '.curlrc').resolve()
print('writing:\n{}to: {}'.format(content, path))
path.write_text(content)

1

बैश के लिए सामान्य समाधान कमांड प्रॉम्प्ट में एक नया प्रतीक जोड़ना है:

संबंधित प्रश्न देखें ( बैश प्रॉम्प्ट से पहले कैसे एक नई रूपरेखा है? ) और संबंधित उत्तर

यह समाधान प्रत्येक कमांड को कवर करता है, न केवल कर्ल।

echo $PS1 # To get your current PS1 env variable's value aka '_current_PS1_'
PS1='\n_current_PS1_'

एकमात्र दुष्परिणाम यह है कि आपको प्रत्येक 2 वीं पंक्ति के बाद कमांड प्रॉम्प्ट मिलता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.