2> / দেব / নাল মানে কি?


উত্তর:


346

> অপারেটর সাধারণত কোনও ফাইলে আউটপুট পুনঃনির্দেশ করে তবে এটি কোনও ডিভাইসে হতে পারে। আপনি সংযোজন করতে >> ব্যবহার করতে পারেন।

আপনি যদি কোনও নম্বর নির্দিষ্ট না করেন তবে মান আউটপুট স্ট্রিমটি ধরে নেওয়া হয় তবে আপনি ত্রুটিগুলি পুনর্নির্দেশও করতে পারেন

> fileপুনঃনির্দেশ stdout ফাইল
1> fileপুনর্নির্দেশ stdout ফাইল
2> fileপুনর্নির্দেশ stderr ফাইল
&> fileপুনর্নির্দেশ stdout এবং stderr ফাইল থেকে

/dev/nullএটি নাল ডিভাইস যা এটি আপনার ইচ্ছা যে কোনও ইনপুট নেয় এবং এটিকে ফেলে দেয়। এটি কোনও আউটপুট দমন করতে ব্যবহার করা যেতে পারে।


6
> /dev/null 2>&1এবং এর মধ্যে কোনও পার্থক্য আছে&> /dev/null
আলেকজান্ডার মিলস

13
অনুশীলনে আজ আমি মনে করি না 2>&1একটি পুরানো বাক্য গঠন রয়েছে তাই &>বহু বছর আগে কাজ করা হত না তবে উভয়ই সমান।
ওয়ারেন হিল

28

সংক্ষেপে, এটি 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

3
> /dev/null 2>&1পরিবর্তে ব্যবহার করার কোনও ভাল কারণ আছে &> /dev/null?
ক্রেগ ম্যাককুইন

7
@ ক্রেইগএমসিউইউন &>বাশ ৪-এ নতুন, পূর্ববর্তীটি হ'ল প্রচলিত উপায়, আমি এর অভ্যস্ত (স্মরণে রাখা সহজ)।
টেরি ওয়াং

একটি মন্তব্য অনুযায়ী @CraigMcQueen এই উত্তর , &> /dev/nullকিছু শাঁস কিন্তু>, / dev / নাল 2> & 1 সব POSIX সামঞ্জস্যপূর্ণ শাঁস কাজ করবে কাজ নাও করতে পারে।
স্ট্যাক করুন

3
কেন এটি 2> & 1 এবং 2 এবং 1> নয় ??
মারিয়েনবাদ

1
@ এমরিএনবাদ আসলে পোস্ট করার মতো প্রশ্ন :-) সিনট্যাক্সটি fn>targetযেখানে fnএকটি ফাইল নম্বর (0-2 সাধারণত, কিছু প্রোগ্রাম আরও সংখ্যার সংজ্ঞা দেয়) এবং targetসাধারণত একটি ফাইলের নাম তবে এখানে এটি অন্য ফাইল নাম্বার - প্রিফিক্সড &যা দিয়ে "আমি একটি ফাইলের নামের পরিবর্তে একটি ফাইলের নাম চাই" এর সিনট্যাক্স।
টুলফোজার

9

/dev/nullলিনাক্স / ইউনিক্সে ব্ল্যাকহোল হিসাবে বিবেচিত হয়, তাই আপনি এতে কোনও কিছু রাখতে পারেন তবে আপনি এটিকে থেকে ফিরে পেতে সক্ষম হবেন না /dev/null

আরও, এর 2>অর্থ হ'ল আপনি (যেমন >) স্টারডারকে (যেমন 2) ব্ল্যাকহোলে পুনঃনির্দেশ করছেন (যেমন /dev/null)

আপনার আদেশ হ'ল:

grep -i 'abc' content 2>/dev/null 

এই জাতীয় অন্য ফরোয়ার্ড স্ল্যাশ দিয়ে শেষ করার চেষ্টা করবেন না - 2>/dev/null/(এটি কোনও ডিরেক্টরি নয়)।


2

grep -i 'abc' সামগ্রী আউটপুট উত্পন্ন করবে যা আপনার কনসোলটিতে প্রদর্শিত হবে, কোনও ত্রুটি সহ।

নির্দিষ্ট 2>/dev/nullকরে ত্রুটিগুলি ফিল্টার করবে যাতে সেগুলি আপনার কনসোলের আউটপুট না হয়।

আরও বিশদে: 2 ত্রুটি বর্ণনাকারীকে প্রতিনিধিত্ব করে, যেখানে ত্রুটিগুলি সেখানে লিখিত হয়। ডিফল্টরূপে এগুলি কনসোলে মুদ্রিত হয়।

\> এই ক্ষেত্রে আউটপুটকে নির্দিষ্ট স্থানে পুনঃনির্দেশ করে /dev/null

/dev/null এমন একটি স্ট্যান্ডার্ড লিনাক্স ডিভাইস যেখানে আপনি আউটপুট প্রেরণ করেন যা আপনি উপেক্ষা করতে চান।


সংক্ষিপ্ত এবং অন-বিষয়। ভাল উত্তর.
সের্গেই কোলোডিয়াজনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.