(প্রায়) সবকিছুই একটি ফাইল তবে সবকিছুই নিয়মিত ফাইল নয়। ডিরেক্টরি, নেটওয়ার্ক সকেট, সিরিয়াল পোর্ট ইত্যাদির মতো একটি বিশেষ ফাইলের জন্য কোনও পাঠ্য সম্পাদককে কল করা কোনও অর্থবোধ করে না
/dev/stdout
ইউনিক্স বৈকল্পিকের উপর নির্ভর করে ফাইলটি বেশ কয়েকটি জিনিসের একটি হতে পারে:
- একটি "বিশেষ" ফাইল, সাধারণত একটি অক্ষর ডিভাইস;
- একটি "যাদু" প্রতীকী লিঙ্ক যা ফাইলটিতে এটি নির্দেশ করে যে এতে অ্যাক্সেস করার প্রক্রিয়াটি এই বর্ণনাকারীর উপর উন্মুক্ত হয়েছে;
- উপরের একটিতে একটি প্রতীকী লিঙ্ক।
যে কোনও ক্ষেত্রে, প্রারম্ভিক /dev/stdout
এবং অনুরূপ ফাইলগুলি একটি নতুন ফাইল বর্ণনাকারী তৈরি করে যা একই ফাইলের সাথে সম্পর্কিত যা অ্যাপ্লিকেশনটি ইতিমধ্যে ফাইল বর্ণনাকারী ১ এ খোলা আছে "" স্ট্যান্ডার্ড আউটপুট "মানে ফাইল বর্ণনাকারী 1, এবং এটি কেবল একটি কনভেনশন যে এই ফাইলের বর্ণনাকারী ব্যবহার করা হয় আউটপুট জন্য - কার্নেল যত্ন করে না।
আপনি যখন কোনও টার্মিনালে একটি প্রোগ্রাম পরিচালনা করেন তখন টার্মিনাল ডিভাইসে তিনটি স্ট্যান্ডার্ড বর্ণনাকারী (0 = স্ট্যান্ডার্ড ইনপুট, 1 = স্ট্যান্ডার্ড আউটপুট, 2 = স্ট্যান্ডার্ড ত্রুটি) খোলা থাকে। সেই ডিভাইস থেকে পড়া ব্যবহারকারী দ্বারা টাইপ করা অক্ষরগুলি ফেরত দেয় এবং সেই ডিভাইসে লেখার ফলে টার্মিনাল উইন্ডোতে পাঠ্য প্রদর্শিত হয়। (এটি দেখায় আউটপুটটি পড়তে বা এটিতে ইনপুট ইনজেক্ট করার জন্য কোনও টার্মিনাল ডিভাইসের কোনও মানক উপায় নেই))
আপনি যখন চালনা করেন cat /dev/stdout
, ঠিক তেমনই একই কাজটি করে cat /dev/stdin
বা cat /dev/stderr
কারণ, কারণ এই তিনটি ফাইল বর্ণনাকারী একই ফাইলের সাথে সংযুক্ত: এটি cat
টার্মিনাল থেকে পড়তে বলে । যে কি cat
কোন যুক্তি দিয়ে তারাও তাই করছে।
যদি আপনি দৌড়ে থাকেন cat /dev/stdout >foo
তবে /dev/stdout
ফাইলটি উল্লেখ করা হবে foo
- সেই আদেশটি সমান cat foo >foo
। cat
বাস্তবায়নের উপর নির্ভর করে , এটি হয় ত্রুটিযুক্ত হতে পারে (জিএনইউ সংস্করণ অভিযোগ করে যে "ইনপুট ফাইল আউটপুট ফাইল"), বা এটি কিছুই করতে পারে না কারণ এটি ফাইলটি foo
খালি থেকে পড়ে ( >foo
কেবল এটি কেটে গেছে)। এর কোনও সংস্করণে cat
এই বিশেষ কেসটি সনাক্ত করে না, যদি foo
খালি না থাকে, তবে cat /dev/stdout >>foo
বা সমতুল্য cat foo >>foo
ফাইলটির বিষয়বস্তু অনির্দিষ্টকালের জন্য নিজের মধ্যে সংযোজন করবে।
আপনি যখন চালান vim /dev/stdout
, এটি অভিযোগ করে কারণ এটি টার্মিনালটি কীভাবে সম্পাদনা করতে হয় তা জানে না (এটি কেবল অর্থবোধ করে না)।