আপনি যখন চালান:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
আপনি মূলত কেবল স্ট্রিম 1 (অর্থাত stdout
) এর আউটপুটটিকে পুনঃনির্দেশ করছেন /dev/null
।
আপনি যখন কোনও প্রোগ্রামের সাধারণ সম্পাদন দ্বারা উত্পাদিত আউটপুট পুনর্নির্দেশ করতে চান তখন এটি ঠিক আছে। যাইহোক, আপনি যদি সমস্ত ত্রুটি, সতর্কতা বা ব্যর্থতার কারণে আউটপুট পুনর্নির্দেশ করতে চান তবে আপনার stderr
বা স্ট্যান্ডার্ড ত্রুটির স্ট্রিমটিতেও পুনর্নির্দেশ করা উচিত /dev/null
।
এটি করার একটি উপায় হ'ল আপনি যে স্ট্রিমটির পুনঃনির্দেশ অপারেটরে পুনঃনির্দেশ করতে চান তার সংখ্যার প্রিপেন্ডিং হ'ল >
:Command 2> /dev/null
সুতরাং, আপনার আদেশটি দেখতে চাইবে:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
তবে লক্ষ করুন যে আমরা ইতিমধ্যে একটি স্ট্রিম এ পুনঃনির্দেশিত করেছি /dev/null
। একই পুনঃনির্দেশে কেবল পিগিব্যাক কেন নয়? বাশ আমাদের স্ট্রিম নম্বরটি নির্দিষ্ট করে যা করতে পুনর্নির্দেশ করতে পারে তা করতে অনুমতি দেয়। 2>&1
।
&
পুনঃনির্দেশ অপারেটরের পরে চরিত্রটি লক্ষ্য করুন । এটি শেলটিকে বলে যে এরপরে যা প্রদর্শিত হবে তা ফাইলের নাম নয়, তবে আউটপুট প্রবাহের জন্য সনাক্তকারী।
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
পুনঃনির্দেশ অপারেটরদের সম্পর্কে সতর্ক থাকুন, তাদের ক্রমটি অনেক গুরুত্বপূর্ণ। আপনি যদি ভুল ক্রমে পুনর্নির্দেশ করতে চান তবে আপনি অপ্রত্যাশিত ফলাফলের সাথে শেষ করবেন।
আপনি সম্পূর্ণ নীরবতা অর্জনের আরেকটি উপায় হ'ল এই শর্টকাটটি ব্যবহার করে সমস্ত আউটপুট স্ট্রিমগুলিকে পুনঃনির্দেশিত /dev/null
করে: &>/dev/null
(বা একটি লগ ফাইলে পুনর্নির্দেশ &>/path/to/file.log
)।
অতএব, আপনার আদেশটি লিখুন:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
&>/dev/null
এটা। তাত্ক্ষণিক সাহায্যের জন্য আপনাকে ধন্যবাদ!