2>/dev/null ঠিক কি করে?

What Exactly Does 2 Dev Null Do



আপনি নতুন লিনাক্স ব্যবহারকারী বা অভিজ্ঞ ব্যাশ প্রোগ্রামার হোন না কেন, এটি অত্যন্ত সম্ভাব্য যে আপনি ক্রিপটিক কমান্ড 2>/dev/null এর সম্মুখীন হয়েছেন। এই কমান্ডটি টেকনিক্যালি জটিল মনে হলেও এর উদ্দেশ্য খুবই সহজ। এটি একটি নাল ডিভাইসকে নির্দেশ করে যা বিভিন্ন কমান্ডের আউটপুট দমন করতে ব্যবহৃত হয়। এই নিবন্ধটি 2>/dev/null কমান্ডের প্রতিটি অংশকে ভেঙে দেবে, এর উদ্দেশ্য ব্যাখ্যা করবে এবং এটি কীভাবে ব্যবহার করা হয় তার উদাহরণ দেখুন।

নাল ডিভাইস - '/dev/null'

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







/dev/null একটি নাল ডিভাইস – একটি বিশেষ ধরনের ভার্চুয়াল ডিভাইস। এটি প্রতিটি লিনাক্স সিস্টেমে উপস্থিত, এবং এই ডিভাইসের উদ্দেশ্য এটিতে প্রেরিত যেকোনো কিছু ফেলে দেওয়া এবং এন্ড অফ ফাইল (EOF) পড়া। বেশিরভাগ ভার্চুয়াল ডিভাইস ডেটা পড়ার জন্য ব্যবহৃত হয়; যাইহোক, /dev /null অনন্য কারণ এটিতে লিখিত যেকোন ডেটা দমন করতে ব্যবহৃত হয়। সহজ কথায়, এটি লিনাক্স অপারেটিং সিস্টেমে লেখা যেকোনো ডেটার জন্য ব্ল্যাকহোল হিসেবে কাজ করে।



এখন, আসুন 2> /dev /null কমান্ডের অবশিষ্ট অংশগুলি দেখি



ফাইল বর্ণনাকারী - '2'

লিনাক্সে প্রতিটি কমান্ড এক্সিকিউশন তিনটি সংশ্লিষ্ট ফাইল তৈরি করে: স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি ফাইল। লিনাক্স অপারেটিং সিস্টেম এই প্রতিটি ফাইলকে একটি অনন্য negativeণাত্মক পূর্ণসংখ্যা দিয়ে বোঝায়।





  • স্ট্যান্ডার্ড ইনপুটের জন্য '0'
  • স্ট্যান্ডার্ড আউটপুটের জন্য '1'
  • স্ট্যান্ডার্ড ত্রুটির জন্য '2'

স্ট্যান্ডার্ড ইনপুট, স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি স্ট্রিমগুলির জন্য প্রযুক্তিগত শর্ত যথাক্রমে stdin, stdout এবং stderr।

আমরা জানি যে '2>/dev/null' কমান্ডের '2' সংখ্যাটি স্ট্যান্ডার্ড ত্রুটি (stderr) প্রবাহকে নির্দেশ করে।



ফাইল পুনireনির্দেশ অপারেটর - '>'

'>' চিহ্নটি ফাইল পুনireনির্দেশ অপারেটর হিসাবে পরিচিত। এর উদ্দেশ্য হল তার বাম দিকের ডান দিকের কমান্ডের দিকে নির্দেশ করা। সহজ কথায়, বাম দিকের যেকোনো স্ট্রিং অপারেটরের ডান দিকে পরিচালিত হবে।

এখন পর্যন্ত, আমরা 2>/dev/null কমান্ডের প্রতিটি অংশের পিছনে উদ্দেশ্য বুঝতে পেরেছি। এটি /dev /null এ ত্রুটি প্রবাহ পাঠায়, যা এটি বাতিল করে। অন্য কথায়, এই কমান্ডটি ত্রুটি আউটপুটগুলি বাতিল এবং দমন করতে ব্যবহৃত হয়। যাইহোক, যদি আপনি একজন অভিজ্ঞ লিনাক্স অভিজ্ঞ, আপনি টার্মিনালে নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে /dev /null ফাইলের বিষয়বস্তু দেখতে পারেন:

$ls -দ্য /দেব/খালি

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

2>/dev/null ব্যবহার করে

যেহেতু আমরা জানি যে কমান্ড 2>/dev/null ত্রুটিগুলি বাতিল করতে ব্যবহৃত হয়, তাই এটি সর্বদা অন্যান্য কমান্ডের সাথে ব্যবহার করা হবে। আমরা নিম্নলিখিত উদাহরণগুলিতে অনুরূপ পদ্ধতি দেখতে পাব। আপনি অ্যাপ্লিকেশন মেনুতে প্রবেশ করে অথবা কীবোর্ড শর্টকাট Ctrl + Alt + T ব্যবহার করে টার্মিনালটি খুলতে পারেন।

প্রথম উদাহরণে, আমরা একটি র্যান্ডম স্ট্রিং (এই ক্ষেত্রে হেলোওয়ার্ল্ড) এর জন্য / sys / ডিরেক্টরিতে একটি অনুসন্ধান পরিচালনা করব। অনুসন্ধানের কমান্ড হল grep, এবং এর যুক্তি হবে সার্চ স্ট্রিং। আপনার স্ট্রিংটি অনুসন্ধান করতে নিম্নলিখিত কমান্ডটি প্রবেশ করান।

$খপ্পর -আরওহে বিশ্ব/sys/

এই অনুসন্ধান কমান্ডটি অসংখ্য ত্রুটি প্রদর্শন করতে বাধ্য কারণ এটি রুট অ্যাক্সেস ছাড়াই ব্যবহার করা হচ্ছে। আমরা এই ত্রুটিগুলি বাতিল করতে 2>/dev/null কমান্ড ব্যবহার করে এর ত্রুটি প্রবাহটি/dev/null এ পাঠাব।

$খপ্পর -আরওহে বিশ্ব/sys/ 2> /দেব/খালি

আমরা দেখতে পাচ্ছি যে কমান্ডের আউটপুট শেষের চেয়ে অনেক বেশি পরিষ্কার এবং সহজ। এর কারণ হল যে 2> /dev /null ব্যবহার করে ত্রুটিগুলি বাতিল করা হচ্ছে, এবং যেহেতু grep কমান্ড আমাদের স্ট্রিং 'হেলোওয়ার্ল্ড' এর সাথে মেলে এমন কোনও ফাইল খুঁজে পাচ্ছে না, তাই এটি কোনও আউটপুট দেখায় না।

/Dev /null- এর ব্যবহারকে আরও ভালভাবে বুঝতে হলে, আমরা যে কোন ওয়েবসাইট (আমাদের ক্ষেত্রে google.com) পিং করার জন্য নিম্নলিখিত উদাহরণটি দেখব। আপনি নিম্নলিখিত কমান্ডটি সম্পাদন করে google.com পিং করতে পারেন:

$পিংগুগল কম

যদি আমরা সব ব্যর্থ পিং বাদ দিতে চাই, আমরা 2>/dev/null কমান্ড ব্যবহার করতে পারি:

$পিংগুগল কম2> /দেব/খালি

এই ক্ষেত্রে, স্ট্যান্ডার্ড ত্রুটি স্ট্রিম (যা google.com- এ ব্যর্থ পিংগুলি দেখায়) ভার্চুয়াল ডিভাইস /dev /null- এ পাঠানো হয় যা সেগুলি বাতিল করে দেয়।

যাইহোক, যদি আমরা কেবল ব্যর্থ পিংগুলি দেখতে চাই, আমরা নিম্নলিখিত কমান্ডটি চালাতে পারি:

$পিংগুগল কম> /দেব/খালি

এখানে, আমরা /dev /null ডিভাইসে স্ট্যান্ডার্ড আউটপুট স্ট্রিম (stdout) পাঠাই যা এটি বাতিল করে। ফলস্বরূপ, আমাদের কেবলমাত্র পিংগুলি রয়েছে যা google.com সার্ভারে পৌঁছাতে ব্যর্থ হয়েছে। যাইহোক, আমাদের ক্ষেত্রে, কোন ব্যর্থ pings ছিল। আমরা বিভিন্ন স্থানে stdout এবং stderr নির্দেশ করতে পারি। এটি সহায়ক যদি আমরা আউটপুট বাতিল করতে চাই এবং একটি লগে ত্রুটি সংরক্ষণ করতে পারি বা তদ্বিপরীত। পিং কমান্ডের স্ট্যান্ডার্ড আউটপুট বাতিল করার সময় আপনি একটি ত্রুটি লগে ব্যর্থ পিংগুলি সংরক্ষণ করতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:

$পিংগুগল কম> /দেব/খালি2>ত্রুটি লগ

উপলক্ষ্যে, আপনি একটি কমান্ডের সমস্ত আউটপুট (স্ট্যান্ডার্ড আউটপুট এবং স্ট্যান্ডার্ড ত্রুটি সহ) দমন করতে চাইতে পারেন। আমরা একটু ভিন্ন পদ্ধতিতে /dev /null ডিভাইস ব্যবহার করে এটি অর্জন করতে পারি। আপনি সমস্ত আউটপুট দমন করতে নিম্নলিখিত কমান্ডটি টাইপ করতে পারেন:

$পিংগুগল কম> /দেব/খালি2> &

লক্ষ্য করুন যে এখানে কমান্ডের ক্রম খুবই গুরুত্বপূর্ণ। পিং কমান্ড কার্যকর করার পর, '>/dev/null' সিস্টেমকে আউটপুট দমন করতে বলে, এবং '2> & 1' স্ট্যান্ডার্ড ত্রুটি প্রবাহকে স্ট্যান্ডার্ড আউটপুটে নির্দেশ করে। এইভাবে, কমান্ডের সমস্ত আউটপুট বাতিল করা হয়।

উপসংহার

আমরা এই নিবন্ধে 2>/dev/null কমান্ড এবং সহজ উদাহরণগুলি বিভক্ত করেছি এবং আশা করি, এখন আপনি বুঝতে পেরেছেন যে এর প্রতিটি বিট কী করে। যাইহোক, এটি শুধু হিমশৈলের টিপ; ব্যাশ প্রোগ্রামিংয়ে নাল ডিভাইসগুলি বিভিন্ন উপায়ে ব্যবহৃত হয়। আরও কিছু উন্নত ব্যবহারের মধ্যে রয়েছে ফাইলের অস্তিত্ব পরীক্ষা করা, প্যাকেজ ইনস্টলেশনগুলি স্বয়ংক্রিয় করা এবং স্ক্রিপ্টগুলিকে অবাঞ্ছিত ব্যতিক্রমগুলিতে চালানো থেকে বিরত রাখা।