मैंने कर्ल के साथ लाइन ब्रेक भेजने के लिए निम्नलिखित कोशिश की है, लेकिन \n
कर्ल द्वारा व्याख्या नहीं की गई है।
curl -X PUT -d "my message\n" http://localhost:8000/hello
मैं कर्ल के साथ एक लाइन ब्रेक कैसे भेज सकता हूं?
जवाबों:
कभी-कभी आप डेटा को वाट्सएप पर भेजना चाहते हैं।
--data-binary
विकल्प है कि नहीं करता है।
-d @message.txt
विशेष रूप से अन्य उत्तर में सुझाए गए अनुसार उपयोग करने का विकल्प आपकी लाइन ब्रेक को बदल सकता है। --data-binary
: दूसरी ओर नहीं (जो महत्वपूर्ण है कि आप बहुखण्डीय / फार्म डेटा के लिए अपनी CRLF लाइनब्रेक रखने की जरूरत है, तो है, को देखने पर stackoverflow.com/questions/10765243/... )
curl -H "Content-Type:text/plain" --data-binary "$(<myfile)" http://localhost:8888
curl --data-binary @/path/to/file.txt http://example.com/target
आपका खोल गुजर रहा है \
के बाद n
के बजाय कर्ल करने के लिए एक के बजाय न्यू लाइन "my message\n"
। बैश के पास एक और स्ट्रिंग सिंटैक्स के लिए समर्थन है जो भागने के दृश्यों का समर्थन करता है जैसे \n
और \t
। इसका उपयोग करने के लिए, स्ट्रिंग को इसके साथ शुरू करें और स्ट्रिंग को $'
समाप्त करें '
:
curl -X PUT -d $'my message\n' http://localhost:8000/hello
बैश संदर्भ नियमावली में ANSI-C कोटेशन देखें
my message\n
शब्दशः गुजरता है, दो पलायन के साथ नहीं जैसा कि आप कहते हैं।
my message\n
वह वही है जो मैं बता रहा हूं "my message\n"
।
\n
जावास्क्रिप्ट के साथ कुछ नहीं करना है। वास्तव में यहाँ कुछ भी जावास्क्रिप्ट के साथ करने के लिए कुछ भी नहीं है।
बहुत आसान तरीका है!
curl -X PUT -d $'my message\n' http://localhost:8000/hello
यह नई पंक्ति वर्ण सम्मिलित करने के लिए ANSI-C क्वोटिंग का उपयोग करेगा ।
कोई पाइपिंग नहीं, कोई डेटा फ़ाइल नहीं। CURL के साथ नई भेजना भी देखें ।
कोई है जो फ़ाइलों का उपयोग नहीं करना चाहता है, और जादू से बचने के लिए शेल का सहारा नहीं लेना चाहता है:
curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF
लेकिन यह पोस्ट डेटा पेलोड में शाब्दिक नई सुर्खियां हैं, न कि फॉर्म फील्ड में।
@
एक फ़ाइल नाम को इंगित करना है, लेकिन क्या उपयोग करते समय कुछ विशेष अर्थ है @-
? क्या <<EOF
कर रहा है?
@-
कर्ल को मानक से इनपुट का उपभोग करने के लिए कहता है, और <<EOF
बैश के लिए स्ट्रीम संकेतक का अंत है। फिर हम बाद EOF
में डेटा पेलोड में मैजिक शब्द का उपयोग करते हुए बैश को बताते हैं कि हम स्ट्रीम को लिख रहे हैं।
-
जब एक फ़ाइल नाम की उम्मीद है STDIN निर्दिष्ट करने के लिए जीएनयू / लिनक्स में मानक तरीका की तरह है। यह सार्वभौमिक नहीं है, लेकिन यह बहुत आम है।
इसी तरह का मुद्दा था। मैक से क्लाउड स्टोरेज के लिए सीएसवी फाइल अपलोड करते समय, नई लाइनों को हटाया जा रहा था। इसे डाउनलोड करने के बाद, पूरी फाइल एक ही लाइन की तरह दिखती थी। मैंने बिना किसी सफलता के अलग-अलग EOL अक्षर '\ n' '\ r' '\ r \ n' जोड़ने की कोशिश की। '-D' के बजाय '-डेटा-बाइनरी' का उपयोग करने से समस्या हल हो गई। Btw इस समस्या केवल मैक से हुई। CentOS मशीन से कॉल करते समय '-d' ने ठीक काम किया। मैक के न्यूलाइन चरित्र के कारण यह बहुत ज्यादा दिखता है। लेकिन किसी भी अधिक डिबगिंग की तरह महसूस मत करो।
आपकी सहायता के लिए धन्यवाद।
curl -X PUT -d @filename.csv https://cloudstorage -H "content-type: text/csv"
वी.एस.
curl -X PUT --data-binary @filename.csv https://cloudstorage -H "content-type: text/csv"
--data-binary @
मेरे मुद्दे को हल कर रहा है (एक CalDAV सर्वर के लिए एक बहुस्तरीय .ics फ़ाइल भेजकर)।
(मैं थोड़ा अलग प्रश्न के साथ यहाँ समाप्त हुआ, इसलिए मैं अपना उत्तर पोस्ट करने जा रहा हूँ क्योंकि यह भविष्य के खोजकर्ताओं की मदद कर सकता है)
मेरा समाधान उन लोगों पर लागू होता है जो एक क्वेरी स्ट्रिंग में प्रपत्र-शैली डेटा, अर्थात कुंजी / मान जोड़े भेज रहे हैं। एन्कोडेड लाइन ब्रेक का उपयोग करें, जो कि %0A
, एन्कोडेड स्पेस कैसा है %20
। अन्य प्रतीकों को परिवर्तित करने के लिए आप http://meyerweb.com/eric/tools/dencoder/ का उपयोग कर सकते हैं ।
इसलिए यदि आप message
मूल्य की कुंजी निर्धारित करना चाहते हैं :
line one
another
आप भेज देंगे
curl --data "message=line%20one%0Aanother" http://localhost:8000/hello
आपके प्रश्न का उत्तर नहीं है, लेकिन मैं संदेश और लाइन विराम वाली एक अस्थायी फ़ाइल बनाकर इसके चारों ओर काम करूंगा, और उस फ़ाइल को कार्य करने के लिए कर्ल दूंगा:
curl -X PUT -d @message.txt http://localhost:8000/hello
वहाँ से मैनुअल :
यदि आप पत्र @ के साथ डेटा शुरू करते हैं, तो डेटा को पढ़ने के लिए शेष फ़ाइल नाम होना चाहिए, या - यदि आप स्टड से डेटा पढ़ने के लिए कर्ल चाहते हैं। फ़ाइल की सामग्री पहले से ही URL-एन्कोडेड होनी चाहिए। एकाधिक फ़ाइलों को भी निर्दिष्ट किया जा सकता है। 'फोब्बर' नामक फाइल से डेटा पोस्टिंग इस प्रकार किया जाएगा --डेटा @foobar।
--data-binary
एक अधिक वफादार विकल्प है -d
।
-d @/path/to/temp/file.txt
लाइन-ब्रेक समस्या का समाधान नहीं करता है। --data-binary
करता है, ऊपर देखें।
एक बहुत आसान तरीका है, ब्रेक के लिए कंसोल में बस शिफ्ट-एंटर करें। बहुत पठनीय टाइपिंग में भी।
curl -d "line1
line2" http-echo.com
Server gets this: line1\nline2
लाइन ब्रेक को हटाने के लिए ऐसा करें:
curl -d "line1 \
line2" http-echo.com
Server gets this: line1 line2
मैं इस कोड के साथ Sendgrid का उपयोग कर रहा था (नीचे कॉपी किया गया) मूल रूप से यहां पाया गया https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html
\n\n
जीमेल में काम किया, लेकिन \n
नजरअंदाज कर दिया गया। मैंने भागने और अन्य सुझावों को दोगुना करने की कोशिश की। मैंने भी कोशिश की \r\n
और वह भी जीमेल में काम नहीं किया। नोट: मैंने अन्य ईमेल ग्राहकों का परीक्षण करने की जहमत नहीं उठाई, शायद यह जीमेल-विशिष्ट समस्या थी।
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": "your.email@example.com"}]}],"from": {"email": "example@example.com"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
आखिरकार मैं छोड़ दिया एक समाधान की तलाश और बंद text/plain
करने के लिए text/html
और सिर्फ इस्तेमाल किया <br />
टैग।
किसी ने सुझाव दिया कि अगर आप ट्रैकिंग पिक्सेल सक्षम है, तो सेंडरग्रेट HTML में प्लेनटेक्स्ट को कनवर्ट करता है, जो समझ में आता है। हो सकता है कि नई प्रतियां सादे-से-HTML रूपांतरण प्रक्रिया में नष्ट हो गईं। मुझे लगता है कि ग्राहक एक ट्रैकिंग पिक्सेल चाहता है, इसलिए HTML पर स्विच करने का फैसला किया।