আমি কার্ল সহ একটি লাইন ব্রেক প্রেরণের জন্য নিম্নলিখিতটি চেষ্টা করেছি, তবে \n
কার্ল দ্বারা ব্যাখ্যা করা যায় না।
curl -X PUT -d "my message\n" http://localhost:8000/hello
আমি কীভাবে কার্ল দিয়ে একটি লাইন ব্রেক পাঠাতে পারি?
উত্তর:
কখনও কখনও আপনি ভারব্যাটিম পাঠাতে ডেটা সরবরাহ করতে চান।
--data-binary
বিকল্পটি আছে।
-d @message.txt
বিশেষ করে অন্যান্য উত্তরে প্রস্তাবিত হিসাবে ব্যবহারের বিকল্প আপনার লাইন ব্রেকগুলি পরিবর্তন করতে পারে। --data-binary
: অন্যদিকে না (যা গুরুত্বপূর্ণ একাধিক / ফর্ম-ডেটার জন্য আপনার CRLF linebreaks রাখার প্রয়োজন হলে হয়, দেখে 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
my message\n
ভারব্যাটিম পাস করে, আপনি যেমন বলেছিলেন তেমন দুটি পলায়ন সহ নয় ।
my message\n
আমি কি হিসাবে উল্লেখ করছি হিসাবে একই "my message\n"
।
\n
জাভাস্ক্রিপ্টের সাথে কিছু করার নেই। আসলে জাভাস্ক্রিপ্টের সাথে এখানে কিছুই করার দরকার নেই।
আরও অনেক সহজ উপায় আছে!
curl -X PUT -d $'my message\n' http://localhost:8000/hello
এটি এএনএসআই-সি উদ্ধৃতি ব্যবহার করবে নিউলাইন চরিত্রটি সন্নিবেশ করানোর ।
পাইপিং নেই, কোনও ডাটা ফাইল নেই। আরও দেখুন গুটিয়ে যাওয়া নতুন লাইন পাঠানো হচ্ছে ।
যে কেউ ফাইল ব্যবহার করতে চান না এবং শেল পলায়নের যাদুটি অবলম্বন করতে চান না তার সমাধানটি হ'ল:
curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF
তবে এটি পোস্ট ডেটা পেলোডে আক্ষরিক নতুনলাইনগুলি, এবং ফর্ম ক্ষেত্রে নয়।
@
কোনও ফাইলের নাম নির্দেশ করার জন্য তবে ব্যবহার করার সময় এর কোনও বিশেষ অর্থ আছে @-
? কি <<EOF
করছে?
@-
কার্লকে স্ট্যান্ডার্ড ইন থেকে ইনপুট গ্রাস করতে বলে এবং বাশের জন্য <<EOF
স্ট্রিম সূচকের শেষ। আমরা পরে EOF
বাশকে তা বলার জন্য ডেটা পেলোডে ম্যাজিক শব্দটি ব্যবহার করি যা আমরা স্ট্রিমে লেখার কাজ শেষ করেছি।
-
জিএনইউ / লিনাক্সের স্ট্যান্ডিন পদ্ধতিতে এসটিডিআইএন নির্দিষ্ট করার জন্য যখন কোনও ফাইলের নাম প্রত্যাশিত হয়। এটি সর্বজনীন নয়, তবে এটি বেশ সাধারণ।
(আমি এখানে কিছুটা পৃথক প্রশ্ন নিয়ে শেষ করেছি, তাই আমি কেবল আমার উত্তর পোস্ট করতে যাচ্ছি কারণ এটি ভবিষ্যতের অভিযাত্রীদের সহায়তা করতে পারে)
আমার সমাধান এমন লোকদের জন্য প্রযোজ্য যারা ফর্ম-স্টাইলের ডেটা প্রেরণ করছেন, অর্থাত্ কী / স্ট্রিংয়ে কী / মান জোড়। এনকোডেড লাইন ব্রেকটি ব্যবহার করুন %0A
, এটি যেমন এনকোড করা স্থানটি ঠিক তেমন %20
। অন্যান্য চিহ্নগুলিতে রূপান্তর করতে আপনি http://meyerweb.com/eric/tools/dencoder/ ব্যবহার করতে পারেন ।
সুতরাং আপনি যদি message
মানটির কীটি সেট করতে চান :
line one
another
আপনি পাঠাতে হবে
curl --data "message=line%20one%0Aanother" http://localhost:8000/hello
একই সমস্যা ছিল। ম্যাক থেকে ক্লাউড স্টোরেজে সিএসভি ফাইল আপলোড করার সময়, নতুন লাইনগুলি সরানো হচ্ছে। এটি ডাউনলোড করার পরে পুরো ফাইলটি একক লাইনের মতো লাগছিল। আমি বিভিন্ন ইওএল অক্ষর '\ 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 ফাইল পাঠানো)।
আপনার প্রশ্নের উত্তর নয়, তবে আমি বার্তা এবং লাইন ব্রেক সহ একটি অস্থায়ী ফাইল তৈরি করে কাজ করব এবং সেই ফাইলটি কার্ল দিয়ে কাজ করব:
curl -X PUT -d @message.txt http://localhost:8000/hello
ম্যানুয়াল থেকে :
আপনি যদি @ চিঠিটি দিয়ে ডেটা শুরু করেন, বাকিটি থেকে ফাইলটি পড়ার জন্য একটি ফাইলের নাম হওয়া উচিত, বা - আপনি স্ট্লিনের কাছ থেকে ডেটা পড়তে কার্ল করতে চান। ফাইলের সামগ্রীগুলি ইতিমধ্যে ইউআরএল-এনকোড হওয়া উচিত। একাধিক ফাইলও নির্দিষ্ট করা যায়। 'ফুবার' নামের একটি ফাইল থেকে ডেটা পোস্ট করা এইভাবে --ডাটা @ ফুবার দিয়ে করা হবে।
--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
আমি এই কোডটির সাথে সেন্ডগ্রিড ব্যবহার করছিলাম (নীচে অনুলিপি করা হয়েছে) এখানে মূলত 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 />
ট্যাগ।
কেউ পরামর্শ দিয়েছেন যে আপনার যদি ট্র্যাকিং পিক্সেল সক্ষম করে থাকে তবে সেন্ডগ্রিড প্লেইন টেক্সটকে এইচটিএমএলে রূপান্তর করে। সম্ভবত নিউলাইনগুলি প্লেইন টেক্সট থেকে এইচটিএমএল রূপান্তর প্রক্রিয়াতে ধ্বংস করা হয়েছিল। আমি ধরে নিলাম ক্লায়েন্ট একটি ট্র্যাকিং পিক্সেল চায়, তাই এইচটিএমএল এ স্যুইচ করার সিদ্ধান্ত নিয়েছে।