উত্তর:
> অপারেটর সাধারণত কোনও ফাইলে আউটপুট পুনঃনির্দেশ করে তবে এটি কোনও ডিভাইসে হতে পারে। আপনি সংযোজন করতে >> ব্যবহার করতে পারেন।
আপনি যদি কোনও নম্বর নির্দিষ্ট না করেন তবে মান আউটপুট স্ট্রিমটি ধরে নেওয়া হয় তবে আপনি ত্রুটিগুলি পুনর্নির্দেশও করতে পারেন
> file
পুনঃনির্দেশ stdout ফাইল
1> file
পুনর্নির্দেশ stdout ফাইল
2> file
পুনর্নির্দেশ stderr ফাইল
&> file
পুনর্নির্দেশ stdout এবং stderr ফাইল থেকে
/dev/null
এটি নাল ডিভাইস যা এটি আপনার ইচ্ছা যে কোনও ইনপুট নেয় এবং এটিকে ফেলে দেয়। এটি কোনও আউটপুট দমন করতে ব্যবহার করা যেতে পারে।
2>&1
একটি পুরানো বাক্য গঠন রয়েছে তাই &>
বহু বছর আগে কাজ করা হত না তবে উভয়ই সমান।
সংক্ষেপে, এটি stderr
ব্ল্যাকহোলে (fd 2) পুনর্নির্দেশ করে (কমান্ডের আউটপুট বাতিল করে)।
পুনঃনির্দেশের জন্য আরও কিছু সাধারণ ব্যবহারের কেস:
command > /dev/null 2>&1 &
command
ব্যাকগ্রাউন্ডে চালান , বাতিল stdout
এবংstderr
command >> /path/to/log 2>&1 &
চালান command
এবং একটি লগ ফাইলে stdout এবং stderr সংযোজন।
বাশ 4+ এ, একটি সংক্ষিপ্ত (তবে কম পাঠযোগ্য) ফর্মটি কার্যকরী
command &>> /path/to/log
> /dev/null 2>&1
পরিবর্তে ব্যবহার করার কোনও ভাল কারণ আছে &> /dev/null
?
&>
বাশ ৪-এ নতুন, পূর্ববর্তীটি হ'ল প্রচলিত উপায়, আমি এর অভ্যস্ত (স্মরণে রাখা সহজ)।
&> /dev/null
কিছু শাঁস কিন্তু>, / dev / নাল 2> & 1 সব POSIX সামঞ্জস্যপূর্ণ শাঁস কাজ করবে কাজ নাও করতে পারে।
fn>target
যেখানে fn
একটি ফাইল নম্বর (0-2 সাধারণত, কিছু প্রোগ্রাম আরও সংখ্যার সংজ্ঞা দেয়) এবং target
সাধারণত একটি ফাইলের নাম তবে এখানে এটি অন্য ফাইল নাম্বার - প্রিফিক্সড &
যা দিয়ে "আমি একটি ফাইলের নামের পরিবর্তে একটি ফাইলের নাম চাই" এর সিনট্যাক্স।
/dev/null
লিনাক্স / ইউনিক্সে ব্ল্যাকহোল হিসাবে বিবেচিত হয়, তাই আপনি এতে কোনও কিছু রাখতে পারেন তবে আপনি এটিকে থেকে ফিরে পেতে সক্ষম হবেন না /dev/null
।
আরও, এর 2>
অর্থ হ'ল আপনি (যেমন >
) স্টারডারকে (যেমন 2
) ব্ল্যাকহোলে পুনঃনির্দেশ করছেন (যেমন /dev/null
)
আপনার আদেশ হ'ল:
grep -i 'abc' content 2>/dev/null
এই জাতীয় অন্য ফরোয়ার্ড স্ল্যাশ দিয়ে শেষ করার চেষ্টা করবেন না - 2>/dev/null/
(এটি কোনও ডিরেক্টরি নয়)।
grep -i 'abc' সামগ্রী আউটপুট উত্পন্ন করবে যা আপনার কনসোলটিতে প্রদর্শিত হবে, কোনও ত্রুটি সহ।
নির্দিষ্ট 2>/dev/null
করে ত্রুটিগুলি ফিল্টার করবে যাতে সেগুলি আপনার কনসোলের আউটপুট না হয়।
আরও বিশদে: 2 ত্রুটি বর্ণনাকারীকে প্রতিনিধিত্ব করে, যেখানে ত্রুটিগুলি সেখানে লিখিত হয়। ডিফল্টরূপে এগুলি কনসোলে মুদ্রিত হয়।
\>
এই ক্ষেত্রে আউটপুটকে নির্দিষ্ট স্থানে পুনঃনির্দেশ করে /dev/null
/dev/null
এমন একটি স্ট্যান্ডার্ড লিনাক্স ডিভাইস যেখানে আপনি আউটপুট প্রেরণ করেন যা আপনি উপেক্ষা করতে চান।
> /dev/null 2>&1
এবং এর মধ্যে কোনও পার্থক্য আছে&> /dev/null