কার্ল দিয়ে লাইন ব্রেক কীভাবে প্রেরণ করবেন?


91

আমি কার্ল সহ একটি লাইন ব্রেক প্রেরণের জন্য নিম্নলিখিতটি চেষ্টা করেছি, তবে \nকার্ল দ্বারা ব্যাখ্যা করা যায় না।

curl -X PUT -d "my message\n" http://localhost:8000/hello

আমি কীভাবে কার্ল দিয়ে একটি লাইন ব্রেক পাঠাতে পারি?


4
কোন প্লাটফর্মে? প্রাসঙ্গিক হতে পারে
পেক্কা

উত্তর:


114

কখনও কখনও আপনি ভারব্যাটিম পাঠাতে ডেটা সরবরাহ করতে চান।

--data-binaryবিকল্পটি আছে।


4
এটি করার সেরা উপায় এটি। -d @message.txtবিশেষ করে অন্যান্য উত্তরে প্রস্তাবিত হিসাবে ব্যবহারের বিকল্প আপনার লাইন ব্রেকগুলি পরিবর্তন করতে পারে। --data-binary: অন্যদিকে না (যা গুরুত্বপূর্ণ একাধিক / ফর্ম-ডেটার জন্য আপনার CRLF linebreaks রাখার প্রয়োজন হলে হয়, দেখে stackoverflow.com/questions/10765243/... )
উইলিয়াম Denniss

9
কারণ এটি আমার এক সেকেন্ড সময় নিয়েছে: আপনি যদি কোনও ফাইল আপলোড করেন তবে আপনি সম্ভবত curl -H "Content-Type:text/plain" --data-binary "$(<myfile)" http://localhost:8888
এটির

আকর্ষণীয়, কিন্তু সুবিধা কী?
সজোকস্ক

8
+1, সঠিক উত্তর। curl --data-binary @/path/to/file.txt http://example.com/target
ফ্রাঙ্ক ওলসচিউস্কি

4
আমি কাজ করতে - ডেটা-বাইনারি পেতে পারি না তবে% 0A অক্ষর (@ ম্যালকমলমিশন দেখুন) উত্তরটি ব্যবহার করতে সক্ষম হয়েছি। আমি যখন - ডেটা-বাইনারি "আইপি = 33.44.55 ব্যবহার করি * "নিউলাইনটি পাঠিয়ে দেয়
পল

51

আপনার শেল এর \পরে nকার্ল করার জন্য একটি নতুন লাইন না হয়ে চলেছে "my message\n"। বাশের মতো আরও একটি স্ট্রিং সিনট্যাক্সের জন্য সমর্থন রয়েছে যা এস্কেপ সিকোয়েন্সগুলিকে \nএবং এর মতো সমর্থন করে \t। এটি ব্যবহার করতে স্ট্রিংটি শুরু করুন $'এবং এর মাধ্যমে স্ট্রিংটি শেষ করুন ':

curl -X PUT -d $'my message\n' http://localhost:8000/hello

দেখুন ANSI-সি বরাত দিয়েব্যাশ রেফারেন্স ম্যানুয়াল


4
এটি আমার জন্যও কাজ করেছিল। আমার সাথে এটি খেলতে হবে, কারণ এটি ডাবল-কোট নিয়ে কাজ করে নি, যার অর্থ আমি স্ট্রিংয়ের মধ্যে একক-কোট ব্যবহার করতে পারি না।
টাইলার কলিয়ার

4
আমি জানি না আপনি এই ধারণাটি কোথায় পেয়েছেন যে এটি "জাভাস্ক্রিপ্ট শেল সিনট্যাক্স"। শেলটি my message\nভারব্যাটিম পাস করে, আপনি যেমন বলেছিলেন তেমন দুটি পলায়ন সহ নয়
ক্রিস ডাউন

@ ক্রিসডাউন, আপনি আমাকে ভুল উত্তর দিয়েছেন। আমি "জাভাস্ক্রিপ্ট স্ট্রিং সিনট্যাক্স" বলেছিলাম, "জাভাস্ক্রিপ্ট শেল সিনট্যাক্স" নয়। আমি আমার স্ট্রিং উদাহরণগুলির সাথে আমার অর্থ কী তা সম্পর্কে পরিষ্কার হতে আমি জাভাস্ক্রিপ্ট স্ট্রিং সিনট্যাক্স ব্যবহার করছি। আমি মনে করি তুমি কি হিসেবে উল্লেখ করছি my message\nআমি কি হিসাবে উল্লেখ করছি হিসাবে একই "my message\n"
বেনিয়ামিন আতকিন

4
@ বেনআটকিন দুঃখিত, ফ্রয়েডিয়ান স্লিপ যাইহোক, আমার পড়া এখনও সঠিক ছিল। \nজাভাস্ক্রিপ্টের সাথে কিছু করার নেই। আসলে জাভাস্ক্রিপ্টের সাথে এখানে কিছুই করার দরকার নেই।
ক্রিস ডাউন

আমি এটি মানুষের কাছে ব্যাখ্যা করার জন্য ব্যবহার করছি। এবং এটি কাজ করেছে বলে মনে হয়। শেল স্ট্রিং সিনট্যাক্সটি ব্যাপকভাবে বোঝা যায় না। যদি তা হত তবে কেন এই প্রশ্ন করা হত? এটি ব্যাখ্যা করার জন্য আমার কী ব্যবহার করা উচিত ছিল?
বেনিয়ামিন আতকিন

16

আরও অনেক সহজ উপায় আছে!

curl -X PUT -d $'my message\n' http://localhost:8000/hello

এটি এএনএসআই-সি উদ্ধৃতি ব্যবহার করবে নিউলাইন চরিত্রটি সন্নিবেশ করানোর ।

পাইপিং নেই, কোনও ডাটা ফাইল নেই। আরও দেখুন গুটিয়ে যাওয়া নতুন লাইন পাঠানো হচ্ছে


বাশ সিনট্যাক্স ব্যবহার না করেও
এটির

সমস্ত উত্তরগুলির মধ্যে এটিই আমার পক্ষে কাজ করেছে
বব কোসিস্কো

15

যে কেউ ফাইল ব্যবহার করতে চান না এবং শেল পলায়নের যাদুটি অবলম্বন করতে চান না তার সমাধানটি হ'ল:

curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF

তবে এটি পোস্ট ডেটা পেলোডে আক্ষরিক নতুনলাইনগুলি, এবং ফর্ম ক্ষেত্রে নয়।


এটা বুঝতে আমার সমস্যা হচ্ছে। আমি পেয়েছি এটি @কোনও ফাইলের নাম নির্দেশ করার জন্য তবে ব্যবহার করার সময় এর কোনও বিশেষ অর্থ আছে @-? কি <<EOFকরছে?
ডেনিস টি

4
@-কার্লকে স্ট্যান্ডার্ড ইন থেকে ইনপুট গ্রাস করতে বলে এবং বাশের জন্য <<EOFস্ট্রিম সূচকের শেষ। আমরা পরে EOFবাশকে তা বলার জন্য ডেটা পেলোডে ম্যাজিক শব্দটি ব্যবহার করি যা আমরা স্ট্রিমে লেখার কাজ শেষ করেছি।
জামার

এছাড়াও, -জিএনইউ / লিনাক্সের স্ট্যান্ডিন পদ্ধতিতে এসটিডিআইএন নির্দিষ্ট করার জন্য যখন কোনও ফাইলের নাম প্রত্যাশিত হয়। এটি সর্বজনীন নয়, তবে এটি বেশ সাধারণ।
ধনী রিমার

ম্যানুয়ালটির সাথে পরামর্শ করে আমরা দেখতে পাচ্ছি যে এটি ঠিক - এবং @ -
183 1945

8

(আমি এখানে কিছুটা পৃথক প্রশ্ন নিয়ে শেষ করেছি, তাই আমি কেবল আমার উত্তর পোস্ট করতে যাচ্ছি কারণ এটি ভবিষ্যতের অভিযাত্রীদের সহায়তা করতে পারে)

আমার সমাধান এমন লোকদের জন্য প্রযোজ্য যারা ফর্ম-স্টাইলের ডেটা প্রেরণ করছেন, অর্থাত্ কী / স্ট্রিংয়ে কী / মান জোড়। এনকোডেড লাইন ব্রেকটি ব্যবহার করুন %0A, এটি যেমন এনকোড করা স্থানটি ঠিক তেমন %20। অন্যান্য চিহ্নগুলিতে রূপান্তর করতে আপনি http://meyerweb.com/eric/tools/dencoder/ ব্যবহার করতে পারেন ।

সুতরাং আপনি যদি messageমানটির কীটি সেট করতে চান :

line one
another

আপনি পাঠাতে হবে

curl --data "message=line%20one%0Aanother" http://localhost:8000/hello

4
লাইন বিরতি / ক্যারেজ ফেরতের চরিত্রের জন্য ছোট মন্তব্য (সম্ভবত টাইপো) এটি% A0 এর পরিবর্তে% 0A হওয়া উচিত
পল

8

একই সমস্যা ছিল। ম্যাক থেকে ক্লাউড স্টোরেজে সিএসভি ফাইল আপলোড করার সময়, নতুন লাইনগুলি সরানো হচ্ছে। এটি ডাউনলোড করার পরে পুরো ফাইলটি একক লাইনের মতো লাগছিল। আমি বিভিন্ন ইওএল অক্ষর '\ n' '\ r' '\ r \ n' সাফল্যের সাথে যোগ করার চেষ্টা করেছি। '-D' -র পরিবর্তে '--data-binary' ব্যবহার করে সমস্যার সমাধান হয়েছে। এই সমস্যাটি কেবল ম্যাক থেকেই ঘটেছিল t 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 @আমার ঠিক একই সমস্যা ছিল এবং ব্যবহারটি আমার সমস্যাটি সমাধান করেছে (একটি ক্যালডিএভি সার্ভারে একটি মাল্টলাইন .ics ফাইল পাঠানো)।
এম-জ্যাক

3

আপনার প্রশ্নের উত্তর নয়, তবে আমি বার্তা এবং লাইন ব্রেক সহ একটি অস্থায়ী ফাইল তৈরি করে কাজ করব এবং সেই ফাইলটি কার্ল দিয়ে কাজ করব:

curl -X PUT -d @message.txt http://localhost:8000/hello

ম্যানুয়াল থেকে :

আপনি যদি @ চিঠিটি দিয়ে ডেটা শুরু করেন, বাকিটি থেকে ফাইলটি পড়ার জন্য একটি ফাইলের নাম হওয়া উচিত, বা - আপনি স্ট্লিনের কাছ থেকে ডেটা পড়তে কার্ল করতে চান। ফাইলের সামগ্রীগুলি ইতিমধ্যে ইউআরএল-এনকোড হওয়া উচিত। একাধিক ফাইলও নির্দিষ্ট করা যায়। 'ফুবার' নামের একটি ফাইল থেকে ডেটা পোস্ট করা এইভাবে --ডাটা @ ফুবার দিয়ে করা হবে।


অস্থায়ী ফাইলগুলি ব্যবহার করা একটি সহজ পদ্ধতির। সজোকসকের উত্তর অনুসারে এর --data-binaryআরও বিশ্বস্ত বিকল্প -d, কারণ এটি ডেটা ভারব্যাটিম প্রেরণ করবে।
উইলিয়াম ডেনিস

7
-1; অস্থায়ী ফাইল ব্যবহার -d @/path/to/temp/file.txtকরে লাইন-ব্রেক সমস্যার সমাধান হয় না। --data-binaryনা, উপরে দেখুন।
ফ্র্যাঙ্ক ওলশেভস্কি

আপনি যদি এটি দেখছেন কারণ আপনি ভাবছেন যে কার্ল কমান্ডগুলি কার্ল আপগ্রেড করার পরে বা উইন্ডোজ 10 এ আপগ্রেড করার পরে কেন কাজ করে না, নিশ্চিত হয়ে নিন যে আপনি আপনার ফাইলের রেফারেন্সের চারপাশে উদ্ধৃতি যুক্ত করেছেন। উদাহরণস্বরূপ: curl -X PUT -d "@ message.txt" লোকালহোস্ট: 8000 / হ্যালো আমার ইলাস্টিকসર્ચ পুনর্নির্মাণ স্ক্রিপ্টগুলি কাজ করা বন্ধ করে দিয়েছে।
jozen777

3

খুব সহজ উপায়, বিরতির জন্য কনসোলে কেবল শিফট-এন্টার করুন। খুব পঠনযোগ্য এটি টাইপও।

curl -d "line1
line2" http-echo.com

Server gets this: line1\nline2

লাইন ব্রেকটি সরাতে এটি করুন:

curl -d "line1 \
line2" http-echo.com

Server gets this: line1 line2

-2

আমি এই কোডটির সাথে সেন্ডগ্রিড ব্যবহার করছিলাম (নীচে অনুলিপি করা হয়েছে) এখানে মূলত https://sendgrid.com/docs/API_References/Web_API_v3/index.html পাওয়া গেছে

\n\nজিমেইলে কাজ করেছেন, তবে \nতা উপেক্ষা করা হয়েছিল। আমি পালানোর এবং অন্যান্য পরামর্শগুলি দ্বিগুণ করার চেষ্টা করেছি। আমি চেষ্টাও করেছি \r\nএবং এটি Gmail এও কাজ করেনি। দ্রষ্টব্য: আমি অন্য ইমেল ক্লায়েন্টদের পরীক্ষা করতে বিরক্ত করিনি, সম্ভবত এটি কোনও Gmail- নির্দিষ্ট সমস্যা ছিল।

    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 />ট্যাগ।

কেউ পরামর্শ দিয়েছেন যে আপনার যদি ট্র্যাকিং পিক্সেল সক্ষম করে থাকে তবে সেন্ডগ্রিড প্লেইন টেক্সটকে এইচটিএমএলে রূপান্তর করে। সম্ভবত নিউলাইনগুলি প্লেইন টেক্সট থেকে এইচটিএমএল রূপান্তর প্রক্রিয়াতে ধ্বংস করা হয়েছিল। আমি ধরে নিলাম ক্লায়েন্ট একটি ট্র্যাকিং পিক্সেল চায়, তাই এইচটিএমএল এ স্যুইচ করার সিদ্ধান্ত নিয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.