ডিফল্ট উপন্যাস "সতর্কতা" ব্যবহার করুন


9

ডিফল্ট ওরফে সতর্কতা হ'ল কমান্ডের জন্য

notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"

এক্সিকিউটিং alertপাঠ্য সতর্কতা এবং একটি টার্মিনাল আইকন সহ একটি বিজ্ঞপ্তি দেয় । এটি যেমন একটি পরম দিয়ে চালিত করা alert !!!!!পাঠ্য সতর্কতার সাথে বিজ্ঞপ্তি দেয় !!!!! এবং !!!!!

সুতরাং, সরল notify-sendকমান্ড এবং এই জটিল উপন্যাসের মধ্যে পার্থক্য কী যা নোটিফাইড-সেন্ড, ইকো, ইতিহাস, লেজ এবং সেড ব্যবহার করে ?

কোন পরিস্থিতিতে এই উরফটি দরকারী বা এটি কেবল শ্লেষের জন্য তৈরি হয়েছিল (ব্যবহার করার মতো কিছু sudo sudo sudo sudo sudo apt-get install

আমি উবুন্টু 12.10 ব্যবহার করছি


আমি কেবলমাত্র একটি বিজ্ঞপ্তি তৈরি করা আরও সহজ করে ভাবতে পারি ... সম্ভবত?
saiarcot895

@ saiarcot895 চেষ্টা করুন notify-send Linux Ubuntuএটি অনেকটা একই, একমাত্র alertতফাতটি এটি একটি আইকন দেখায় B তবে কমান্ডটিতে শেড, লেজ এবং ইতিহাস রয়েছে কেন তা আমি বুঝতে পারি না
নিবন্ধিত ব্যবহারকারী

উত্তর:


8

এখানে সম্মিলিত আদেশগুলি কী করে তার বিশদ পেতে আপনি ম্যান পেজগুলি ব্যবহার করতে পারেন। এই কমান্ডগুলির উদ্দেশ্য সম্পর্কে এখানে কিছু বলা হয়েছে:

"$([ $? = 0 ] && echo terminal || echo error)"

এটি সম্পাদন স্থিতি অনুসারে টার্মিনাল বা ত্রুটির প্রতিধ্বনি করবে - শেষ কমান্ডের যথাক্রমে সফল বা ব্যর্থ ; এবং ফলাফল আইকন প্রদর্শন করার জন্য -iস্যুইচ মান হিসাবে হয় notify-send

history|tail -n1

.. শেষ আদেশটি কার্যকর করা।

এবং বার্তাটি sedপ্রদর্শন করার জন্য পাঠ্যকে পার্স করা notify-send


এগুলি বোঝার জন্য নিম্নলিখিত চেষ্টা করুন:

true; echo "$([ $? = 0 ] && echo terminal || echo error)"

.. এটি টার্মিনাল প্রতিধ্বনিত হবে ।

false; echo "$([ $? = 0 ] && echo terminal || echo error)"

.. এটি ত্রুটি প্রতিধ্বনিত হবে ।

notify-send -i terminal 'Please note the icon..' 'the default icon for the terminal has been used. You can specify any other icon of your choice'

এবং,

echo $?

..এটি কার্যকর করা শেষ কমান্ডের প্রস্থান মূল্য জানতে খুব দরকারী।

echo "$(echo "the output of this command enclosed within \$(...)") is being supplied here in the outer echo command where is used as an argument."

.. একটি কমান্ড কম্বো echoব্যবহার করার জন্য একটি সাধারণ ডেমো হিসাবে চিহ্নিত $()


1
সুতরাং কমান্ডটি সফলভাবে কার্যকর হয়েছে কিনা তা ব্যর্থ হয়েছে কিনা তা GUI উপায়ে ব্যবহারকারীকে বলতে এই উপনামটি ব্যবহার করা যেতে পারে।
নিবন্ধিত ব্যবহারকারী

হ্যাঁ এটি গ্রাফিকভাবে ব্যবহার করে সফল বা ব্যর্থ উভয় মৃত্যুদণ্ডের বিষয়েই জানানো হবে notify-send.. শেষ কমান্ডের প্রস্থান স্থিতির মানটি পরীক্ষা করা হয় $?.. আমি এটিকে সম্পাদনাতে অন্তর্ভুক্ত করেছি ..
যথাযথ

7

এখানে কী ঘটছে তা বোঝানোর চেষ্টা করি:

notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"

1 --urgency=low

-উ, - আরজেন্সি = লেভেল জরুরী স্তর (নিম্ন, স্বাভাবিক, সমালোচনা) নির্দিষ্ট করে।

-i "$([ $? = 0 ] && echo terminal || echo error)"

  -i, --icon=ICON[,ICON...]
         Specifies an icon filename or stock icon to display.

এই অংশ "$([ $? = 0 ] && echo terminal || echo error)"$?শেষ ত্রুটি (বা সাফল্য) ফিরে এসেছে। সুতরাং এটি পাঠানো "টার্মিনাল" পাঠায় যদি শেষ কমান্ডের প্রস্থান কোডটি ছিল ত্রুটি ছাড়াই 0 অথবা প্রস্থান কোড 0 না হলে "ত্রুটি" প্রদান করে।

এবং অবশেষে আমরা "টার্মিনাল" বা "ত্রুটি" আইকন পাই।

3 $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')

history|tail -n1 ইতিহাস থেকে শেষ কমান্ড প্রদান করে।

sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'') এটি 2 টি ব্লকের সেডে আলাদা করা যায়।

3.1। sed 's/^\s*[0-9]\+\s*//'সমস্ত পূর্ববর্তী স্থান এবং ট্যাবগুলি সরিয়ে ফেলুন, তার পরে সমস্ত সংখ্যাসূচক এবং শেষে স্পেস এবং ট্যাবগুলি সরিয়ে ফেলুন।

3.2। s/[;&|]\s*alert$//পূর্ববর্তী চিহ্নগুলি ; & |, কোনও ট্যাব এবং স্পেস এবং শব্দ "সতর্কতা" সরিয়ে দেয়।

এটি প্রতীক থেকে কেবল শেষ সম্পাদিত আদেশ এবং শেষে "সতর্কতা" শব্দটি পরিষ্কার।

সুতরাং আপনি যদি এই জাতীয় কিছু ব্যবহার করেন:

echo "Hello alert" | alert

এটি পূর্ববর্তী কমান্ড সহ সতর্কতা প্রদর্শন করবে।


3

আমি মনে করি বর্তমান উত্তরগুলি কীভাবে সতর্কতার অভ্যন্তরীণ কাজগুলি ব্যাখ্যা করে (যা আমি কৌতূহল থেকে খুঁজে পেতে চেয়েছিলাম এবং যা আমাকে এখানে পেয়েছে) তা ব্যাখ্যা করে। তবে আমি মনে করি যে আসল ওপিটি এটি দরকারী কিসের জন্য জিজ্ঞাসা করে যার জন্য আমি এর ঘোষণার উপরের প্রশংসাপত্রগুলি থেকে বোঝার সাথে সাথে ব্যাখ্যা করার চেষ্টা করব।

মূলত এটি আপনাকে সতর্ক করতে ব্যবহৃত হয় যখন কোনও কমান্ড শেষ হয়ে গেলে আপনি যখন টার্মিনালটি সম্পূর্ণরূপে অপেক্ষা না করে পুরো সময়টি দেখার জন্য বসে থাকতে পারেন। প্রশংসনীয় উদাহরণ sleep 10; alertঅনুসারে কমান্ডের একটি বিজ্ঞপ্তি প্রদর্শন করবে (এক্ষেত্রে sleep 10) টার্মিনাল আইকনটি সফল হলে (ঘুম 10 শেষ হতে 10 সেকেন্ড লাগবে)।

এটি থেকে আপনি দেখতে পাবেন যে এটি <command>; alertআপনার কমান্ডের সাথে কমান্ডটি প্রতিস্থাপন করার জায়গায় ব্যবহার করা উচিত । আমাকে ব্যক্তিগতভাবে উইজেটের মাধ্যমে প্রতিদিন একটি ভিডিও ডাউনলোড করতে হয় কারণ এটি পর্যায়ক্রমে ব্যর্থ হয়। তাই আমি ডাউনলোড কমান্ডটি মাত্র সতর্কতার সাথে সংযুক্ত করেছি যাতে এটি ব্যর্থ হওয়ার পরে অবিলম্বে আমাকে অবহিত করতে যাতে এটি আবার চালিয়ে যেতে পারে (আমার সতর্কতাটি আমার দৃষ্টি আকর্ষণ করার জন্য বীপকেও পরিবর্তন করা হয়েছে)।


0

কারণটি sed, tailএবং historyরয়েছে কারণ এটি আপনার টাইপ করা বার্তাটি পাওয়া দরকার। (কোনও কারণে,) আপনি যা টাইপ করেছেন তা কোনও ভেরিয়েবলের মাধ্যমে সরাসরি পাওয়া যায় না। অতএব, historyআপনার টাইপ করা সমস্ত কিছুর তালিকা পেতে, আপনার টাইপ করা tail -n1সর্বশেষ জিনিসটি পেতে এবং শুরুতে "সতর্কতা" কমান্ড থেকে মুক্তি পেতে কিছু রেইগেক্স ব্যবহার করতে হবে।

কেবল এটির প্রসারিত করার জন্য, সেখানে একটি শর্তসাপেক্ষ কমান্ড রয়েছে যা $? = 0সত্য কিনা তা পরীক্ষা করে । আমি যা বলতে পারি তা থেকে, যদি এটি সত্য হয় তবে এটি টার্মিনাল থেকে আসছে এবং এটি একটি সাধারণ বার্তা হিসাবে বিবেচিত হওয়া উচিত। অন্যথায়, এটি একটি ত্রুটি হিসাবে বিবেচনা করা উচিত, এবং একটি ত্রুটি আইকন উপস্থিত হবে।


এটি সতর্কতা থেকে মুক্তি পায় না , এটি বিজ্ঞপ্তিতে থাকবে।
নিবন্ধিত ব্যবহারকারী

1
আপনি এটা প্রায়ই একটি খুবই সুন্দর একটি উত্তর নয় "কিছু কারণে" সঙ্গে উত্তর যদি;)
Requist

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