আসুন বিরতি >> /dev/null 2>&1
অংশে বিবৃতি:
পর্ব 1: >>
আউটপুট পুনঃনির্দেশ
এটি প্রোগ্রামের আউটপুটটিকে পুনর্নির্দেশ করতে এবং ফাইলের শেষে আউটপুট সংযোজন করতে ব্যবহৃত হয়। আরও ...
পার্ট 2: /dev/null
বিশেষ ফাইল
এটি সিউডো-ডিভাইসগুলির একটি বিশেষ ফাইল ।
কমান্ড ls -l /dev/null
আপনাকে এই ফাইলটির বিশদ দেবে:
crw-rw-rw-. 1 root root 1, 3 Mar 20 18:37 /dev/null
আপনি পালন করেছেন crw
? যার অর্থ এটি সিউডো-ডিভাইস ফাইল যা চরিত্র-বিশেষ-ফাইল ধরণের যা সিরিয়াল অ্যাক্সেস সরবরাহ করে।
/dev/null
সমস্ত ইনপুট গ্রহণ করে এবং বাতিল করে দেয়; কোনও আউটপুট উত্পাদন করে না (সর্বদা একটি পঠনের শেষে ফাইলের শেষের ইঙ্গিত দেয়)। তথ্যসূত্র: উইকিপিডিয়া
পার্ট 3: 2>&1
ফাইল বর্ণনাকারী
আপনি যখনই কোনও প্রোগ্রাম সম্পাদন করেন, অপারেটিং সিস্টেমটি সর্বদা তিনটি ফাইল, স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি খোলে যেহেতু আমরা জানি যখনই কোনও ফাইল খোলা হয়, অপারেটিং সিস্টেম ( কার্নেল থেকে ) একটি ফাইল বর্ণনাকারী নামক একটি অ-নেতিবাচক পূর্ণসংখ্যার ফিরিয়ে দেয় । এই ফাইলগুলির জন্য ফাইল বর্ণনাকারী যথাক্রমে 0, 1 এবং 2 হয়।
সুতরাং 2>&1
সহজভাবে স্ট্যান্ডার্ড আউটপুটে স্ট্যান্ডার্ড ত্রুটি পুনর্নির্দেশ বলে।
&
মানে যা কিছু অনুসরণ করে তা ফাইলের নাম নয়, কোনও ফাইলের নাম।
সংক্ষেপে, এই কমান্ডটি ব্যবহার করে আপনি আপনার প্রোগ্রামটিকে বলছেন যে মৃত্যুদণ্ড কার্যকর করার সময় চিৎকার করবেন না।
ব্যবহারের গুরুত্ব কী 2>&1
?
আপনি যদি কোনও আউটপুট উত্পাদন করতে না চান, এমনকি টার্মিনালে উত্পাদিত কিছু ত্রুটির ক্ষেত্রেও। আরও স্পষ্টভাবে ব্যাখ্যা করতে, আসুন নিম্নলিখিত উদাহরণটি বিবেচনা করুন:
$ ls -l > /dev/null
উপরের কমান্ডের জন্য, টার্মিনালে কোনও আউটপুট প্রিন্ট করা হয়নি, তবে এই আদেশটি যদি ত্রুটি সৃষ্টি করে:
$ ls -l file_doesnot_exists > /dev/null
ls: cannot access file_doesnot_exists: No such file or directory
আমি আউটপুটটিতে পুনর্নির্দেশ দিচ্ছি /dev/null
, এটি টার্মিনালে মুদ্রিত হয়। এটি কারণ আমরা ত্রুটি আউটপুটটিতে পুনর্নির্দেশ করছি না /dev/null
, সুতরাং ত্রুটি আউটপুটটিকেও পুনর্নির্দেশের জন্য এটি যুক্ত করতে হবে 2>&1
:
$ ls -l file_doesnot_exists > /dev/null 2>&1
>&- 2>&-
।