কমান্ড আউটপুটে লাইন বিরতি যুক্ত করুন


6

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

curl -s "http://myserver.com/api?param=1&param=2" | sudo tee -a /var/log/myserver.log

আমি এটি একটি একক-লাইন কমান্ড রাখতে চাই। কোন পরামর্শ স্বাগত। সময় দেয়ার জন্য ধন্যবাদ.

উত্তর:


8

ব্যবহার করুন echo, এটি স্বয়ংক্রিয়ভাবে একটি নতুন লাইন যুক্ত হবে:

echo "`curl -s "http://myserver.com/api?param=1&param=2"`" | sudo tee -a /var/log/myserver.log

বিকল্পভাবে, আপনি -wবিকল্পটি চেষ্টা করতে পারেন , তবে আমি দেখতে পেয়েছি এটি কোনওভাবে কনসোলটিতে মজার চরিত্রগুলি মুদ্রণ করেছে (তবে ফাইলের কাছে নয়, ভাগ্যক্রমে):

curl -s "http://myserver.com/api?param=1&param=2" -w "\n" | sudo tee -a /var/log/myserver.log

আমি উভয় চেষ্টা করেছিলাম, কিন্তু তারা কাজ করেনি। মজার বিষয় হল, প্রথমটি ফলাফল থেকে সমস্ত লাইন ব্রেকগুলি সরিয়ে দেয়। কমান্ডে of ব্যবহারের কারণে এটি হতে পারে? যাই হোক ধন্যবাদ.
গুডু

1
হ্যাঁ, আমি আউটপুট ধরেছি বা curlলাইন ব্রেকগুলি ধারণ করবে না। আমি `অনুরোধের চারপাশে ডাবল উদ্ধৃতি যুক্ত করেছি , যাতে এটি করা উচিত। দ্বিতীয় বিকল্পটি সূক্ষ্মভাবে কাজ করা উচিত, যদিও এটি কার্লকে কেবলমাত্র নতুন লাইন আউটপুট করতে অতিরিক্ত নির্দেশ দেয় (দেখুন man curl)।
স্টিফান সিডেল

চারপাশে ডাবল উক্তি যুক্ত করার পরে - এটি কাজ করে! ধন্যবাদ!
গুডু

4

সিম্পলস্ট শুধুমাত্র একটি নতুন লাইন যুক্ত করা হয় echo

কার্ল-গুলি " http://myserver.com/api?param=1¶m=2 " | sudo tee -a /var/log/myserver.log && এর প্রতিধ্বনি "" >> /var/log/myserver.log


হুমম ... যখন আমি আমার লোকাল মেশিনে এটি চেষ্টা করেছি, এটি ভাল কাজ করে। তবে সার্ভারে ব্যবহার করার সময় এটি বলে, "বশ: /var/log/myserver.log: অনুমতি অস্বীকৃত"। প্রতিধ্বনির আগে সুডো যুক্ত করা কোনও কাজ করেনি।
গুডু

1
তবে এটি আপনার লগফাইলে প্রতিধ্বনিত করতে sudo ব্যবহার করছে না, তাই সুডোর প্রয়োজন না হলে কমপক্ষে এটি ... && echo | sudo tee -a ...হওয়া দরকার?
স্টিফান সিডেল

3
চেষ্টা করুন(curl -s "http://www.nexon.org.uk" && echo "") | sudo tee -a ...
সন্দেহভাজন

1

আমি এটির awk 1জন্য ব্যবহার করি (যেখানে 1কেবল এমন কিছু যা সত্যের কাছে মূল্যায়ন করে):

$ printf a|awk 1
a
$ printf a\\n|awk 1
a
$ 

এটি গাওক, বিডব্লিউকে অ্যাওয়ার্ক / নওক (যেটি ওএস এক্সের সাথে আসে), এবং মাক (যে ডেবিয়ান সহ আসে) নিয়ে কাজ করা উচিত। sed -n pওএস এক্স এর সিডের সাথে কাজ করে তবে জিএনইউ সেডের সাথে নয়।

একটি বাশ-কেবল বিকল্প:

printf %s\\n "$(cat)"

নোট করুন যে $()সমস্ত লাইনফিডগুলি শেষ থেকে সরিয়ে দেয়, উদাহরণস্বরূপ echo $'a\n\n'|printf %s\\n "$(cat)"কেবলমাত্র একটি লাইনফিড মুদ্রণ করে।

আপনি এর printf %s\\nসাথে প্রতিস্থাপনও করতে পারেন echo, তবে উদাহরণস্বরূপ x=-nene;echo "$x"বাশে কোনও কিছুই মুদ্রণ করা যায় না (যদি না xpg_echoএবং পসিএক্স মোড সক্ষম না হয়)।


0

প্রতিধ্বনি ব্যবহার করে অন্যান্য বাক্য গঠন:

commands... | { cat; echo; } | ...

0

-w "\n"সুইচ যোগ করুন বা রাখুন

-w "\n"

আপনার মধ্যে ~/.curlrc

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