পূর্ববর্তী কমান্ডের স্টাডআউটপুট-এ কিছু প্রিপেন্ড করতে বাশ পাইপ নির্মাণ করে


23

আমাকে স্টাফ প্রেরণের জন্য আমি সেন্ডমেলটি ব্যবহার করতে চাই এবং অননিলায়নে এটি করতে চাই।

echo "mail content" | sendmail emailataddres.com 

বিষয় ছাড়াই এটি প্রেরণ করে।

বিষয় লাইনটি অবশ্যই মেল সামগ্রীর আগে উপস্থিত হওয়া উচিত, তাই আমি এর লাইন ধরে কিছু খুঁজছি:

echo "mail content" | prepend "Subject: All that matters" | sendmail emailataddres.com 

সেড এবং অ্যাজক ব্যবহার এবং মনে রাখার জন্য সত্যই বিশ্রী হতে থাকে।

সম্পাদনা : কেবল স্পষ্ট করার জন্য: প্রতিধ্বনি "মেল সামগ্রী" কেবল একটি চিত্রের উদাহরণ example আমার যে কোনও উত্স থেকে স্টাডআউট স্ট্রিমগুলিতে স্টাফগুলি প্রিপেন্ড করতে সক্ষম হওয়া দরকার। যেমন: ifconfig, zcat, ইত্যাদি ..


echo -e "Subject: All that matters\nmail content"? বা তার বেশি প্ল্যাটফর্ম অজ্ঞেয়বাদী: printf 'Subject: %s\n%s\n' "All that matters" "mail content"। আপনি একটি ছোট স্ক্রিপ্টও লিখতে পারেন যা এমনকি আরও সহজ এক-লাইনার তৈরি করতে দুটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে।
ড্যানিয়েল অ্যান্ডারসন

আচ্ছা আপনি যদি এটির উত্তর হিসাবে যুক্ত করেন তবে আমি এটি গ্রহণ করতে পারি ... :)
AndreasT

আহ, না আমি দুঃখিত না। আমার সম্পাদনা বিবেচনা করুন।
AndreasT

কি করা উচিত prepend? কীভাবে কোনও কীভাবে প্রিপেন্ড করা যায় তা জানতে, আপনাকে আপস্ট্রিম কমান্ড (যেমন echo) ইওএফ না পাঠানো পর্যন্ত অপেক্ষা করতে হবে , যাতে আপনি প্রেরণ মেলটিতে পাইপ পাওয়ার জন্য স্টাডাউটে পাসের আগে স্ট্রিমের সামনে এটির আগে আপনার ডেটা sertোকাতে পারেন। শর্টিশ রুবি বা পাইথন স্ক্রিপ্টের জন্য কোনও কাজের মতো মনে হচ্ছে।
allquixotic

1
কিছুটা ভিন্ন পদ্ধতি mailহ'ল sendmailসরাসরি পরিবর্তে কমান্ডটি (কখনও কখনও বিএসডিমেইল নামে পরিচিত) ব্যবহার করা। mailএকটি -s subjectifconfig -a | mail -s 'Current ifconfig output' me@someaddr.com
alচ্ছিক

উত্তর:


40
$ echo 1 | (echo 2 && cat)
2
1

আমি খুব নিশ্চিত যে একটি ভাল সমাধান আছে, কিন্তু এটি করা উচিত।


1
সরল, ক্রিয়ামূলক এবং প্রদর্শিত +1
হেনেস

ব্রেক রিটার্ন না করে কি এটি করার সহজ উপায় আছে?
ভেনোম ফ্যাঙ্গস

2
@ ভেনমফ্যাঙ্গস printfদ্বিতীয়টির পরিবর্তে ব্যবহার করুন echoএবং আপনার ভাল হওয়া উচিত
ট্রেন্ডফিশার

> ব্রেক রিটার্ন না করে কি এটি করার সহজ উপায় আছে? -echo -n
কিব

6

হয় ক্লডিয়াস যা বলেছিল তা ব্যবহার করুন বা নিজের তৈরি করুন:

~ / বিন / শুরুতে যোগ:

#!/bin/sh
echo -en "$@"
cat -

উদাহরণ:

$ echo "Splendid SUPANINJA! Let's do it!" |\
     prepend "Subject: Venetian Snares\n"

Subject: Venetian Snares
Splendid SUPANINJA! Lets do it!


5

এটি ক্লডিয়াস উত্তর দ্বারা অনুপ্রাণিত।

আপনি যদি আপনার আউটপুটগুলির মধ্যে বিরতি ফিরতে না চান তবে -nপ্যারাম যুক্ত করুন। এটি দেখতে এইরকম হবে:

$ echo 1 | (echo -n 2 && cat)

যা দেবে:

21


1
আসলে, না এটা হবে না। এটি "2 \ n1" দেয়। দ্বিতীয় প্রতিধ্বনিতে আপনাকে "-n" সংযুক্ত করতে হবে । এখনও +1। যদি আপনি এটি সংশোধন করেন তবে আমি এটি গ্রহণ করতে পারি। আমি কী নিশ্চিত তা নিশ্চিত নই, যেহেতু ক্লোডিয়াস সমাধানে সবচেয়ে বেশি অবদান রেখেছিল।
AndreasT

দুঃখিত, মনে হয় আমি -nভুল জায়গায় রেখেছি । যাইহোক, আপডেটটি "21 \ n" দেওয়া উচিত যদি আপনি of n থেকে মুক্তি পেতে চান তবে কেবল 1 এর আগে একটি -n যোগ করুন
ভেনোম ফ্যাঙ্গস

1

আমি যে টুকরোগুলি সংগ্রহ করেছি তা থেকে ... আপনি এরকম কিছু করতে পারেন:

echo "Subject: All that matters
`echo "mail content"`" | sendmail blah@blahblah

লক্ষ্য করুন যে আমি প্রথম লাইনে উদ্ধৃতিগুলি বন্ধ করি নি ... কারণ সমস্ত শেলগুলি \nএকটি নতুন লাইনের চরিত্রে অনুবাদ করে না ... তবে এখনও আমার একটি উদ্ধৃতি পাওয়া যায়নি যা উদ্ধৃতিগুলির মধ্যে একটি প্রকৃত নিউলাইন প্রক্রিয়া করবে।

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

**** সম্পাদনা করুন **** ক্লাউডিয়াসের পরামর্শের পরে, একটি ক্লিনার বিকল্পটি দেখতে এরকম হবে:

echo -e "Subject: All that matters \n $(echo "mail content") |sendmail blah@blahblah

এমনকি সেই টেম্পলেটটি দিয়েও এটি ব্যবহার করা যেতে পারে।


1
এটি সাধারণত $()বহনযোগ্য (এবং আরও পঠনযোগ্য) বলে মনে করা হয় বলে এটি `than এর পরিবর্তে ব্যবহার করা আরও ভাল। তদ্ব্যতীত, আপনি এটিকে নতুন লাইনগুলি অনুবাদ করতে ( ) echoএর -eবিকল্পটি ব্যবহার করতে পারেন echo -e "1\n2"বা প্রথম মন্তব্যে ড্যানিয়েলের পরামর্শ অনুসারে প্রিন্টফ ব্যবহার করতে পারেন।
ক্লোডিয়াস

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