আপনার প্রশ্নটি কীভাবে কমান্ড লাইনে থাকা শেল আপনি ব্যবহারকারী ইনপুট ব্যবহার করছেন তার সাথে সম্পর্কিত closely
কমান্ড লাইনের প্রথম শব্দটি যদি কোনও প্রোগ্রাম হয়, যা একটি বিশেষ ফোল্ডারে অবস্থিত (বেশিরভাগ দ্বারা সংজ্ঞায়িত PATH) এবং আর কোনও বিশেষ অক্ষর দেওয়া না হয় (আপনি যে শেলটি ব্যবহার করছেন তার উপর নির্ভর করে), সমস্ত পরবর্তী শব্দগুলি স্পেস বা ট্যাব দ্বারা পৃথক করে দেওয়া হয় একটি বিশেষ ফর্ম অর্থাৎ একটি অ্যারে প্রোগ্রাম। অ্যারেতে প্রতিটি উপাদান একটি উপাদান হিসাবে।
প্রোগ্রামটি কীভাবে আপনি আর্গুমেন্টগুলি ব্যাখ্যা করতে যাচ্ছেন (অ্যারেতে অবস্থিত) এটি কীভাবে প্রোগ্রাম করা হয় তার উপর নির্ভর করে। আর্গুমেন্টের বাক্য গঠনটি দেখতে কেমন হওয়া উচিত তার কয়েকটি আধিক্য মান রয়েছে তবে সাধারণভাবে প্রোগ্রামার সম্পূর্ণ বিনামূল্যে। সুতরাং প্রথম যুক্তিটি কোনও ফাইলের নাম বা প্রোগ্রামার যা মনে করে প্রোগ্রামটি লিখেছিল সে হিসাবে তার অর্থ ব্যাখ্যা করা যেতে পারে।
যদি আপনি বিশেষ অক্ষর যোগ <অথবা >আপনার কমান্ড লাইন, শেল dosn't পরিশেষে যোগ <এবং >অ্যারের যে প্রোগ্রাম প্রেরণ করা হবে না পরবর্তী শব্দ। সঙ্গে <বা >প্রদত্ত করতে অভিনব জিনিস শেল শুরু অন্তর্নিহিত কার্নেল (মূল শব্দ দ্বারা সমর্থিত বংশীধ্বনিতুল্য )। কী চলছে তা বোঝার জন্য আপনাকে বুঝতে হবে কী STDINএবং STDOUT(যেহেতু এটি অবিলম্বে সম্পর্কিত নয় তবে আমি বাদ দিই STDERR)।
আপনার টার্মিনালে যা কিছু দৃশ্যমান তা আপনি দেখতে পান (বেশিরভাগ ক্ষেত্রে আপনার ডিসপ্লের একটি অংশ) হয় শেল বা অন্য কোনও প্রোগ্রাম দ্বারা রচিত যা আপনি আগে একটি বিশেষ ফাইলটিতে অনুরোধ করেছেন ( ইউনিক্সে সমস্ত কিছুই একটি ফাইল )। এই ফাইলটির একটি বিশেষ আইডি রয়েছে এবং বলা হয় STDOUT। যদি কোনও প্রোগ্রাম কীবোর্ড থেকে ডেটা পড়তে চায় তবে এটি সরাসরি কীবোর্ডটি পোল করে না (কমপক্ষে বেশিরভাগ ক্ষেত্রে) তবে একটি বিশেষ ফাইল থেকে ডাকে STDIN। অভ্যন্তরীণভাবে এই ফাইলটি আপনার স্ট্যান্ডার্ড ইনপুট ডিভাইসে, বেশিরভাগ ক্ষেত্রে আপনার কীবোর্ডের সাথে সংযুক্ত থাকে।
শেলটি পড়লে <বা >পার্সড কমান্ড লাইনে যদি এটি সম্পর্কিত প্রোগ্রামটি চলমান হয় তবে এটি পরিচালনা করে STDINবা STDOUTকোনও বিশেষ ধরণের। STDINএবং STDOUTটার্মিনাল বা স্ট্যান্ডার্ড ইনপুট ডিভাইসটিকে আর নির্দেশ না করে বরং কমান্ড লাইনের পরবর্তী ফাইলনামের দিকে নির্দেশ করে।
দুটি লাইনের ক্ষেত্রে
cat file_name
cat < file_name
পর্যবেক্ষণ করা আচরণটি অভিন্ন কারণ সংশ্লিষ্ট বিকাশকারী catহয় হয় STDINফাইল থেকে ডেটা পড়তে বা পড়ার জন্য, যার নাম প্রথম কমান্ড লাইন আর্গুমেন্ট হিসাবে দেওয়া হয় (যা অ্যারেতে প্রথম উপাদান যা শেলটি দিয়ে যায় cat)। পরবর্তীকালে টার্মিনালের catসম্পূর্ণ সামগ্রী file_nameবা STDINটার্মিনালে লেখায় যেহেতু আমরা শেলটি ম্যানিপুলেট করার নির্দেশ দিই না STDOUT। মনে রাখবেন যে দ্বিতীয় লাইনে আপনার শেলটি STDINএভাবে চালিত করে যে এটি আপনার স্ট্যান্ডার্ড ইনপুট ডিভাইসটিকে কোনওভাবেই নির্দেশ করে না তবে file_nameআপনার বর্তমান কার্যকরী ডিরেক্টরিতে ডাকা একটি ফাইলকে নির্দেশ করে ।
লাইনের অন্য ক্ষেত্রে
man < file_name
manSTDINকোনও আর্গুমেন্ট অর্থাৎ একটি খালি অ্যারে না থাকলে এটি থেকে কিছু পড়তে বোঝানো হয় না । তাই লাইন
man < file_name
সমান
man
উদাহরণস্বরূপ manকিছু থেকে পড়বে STDIN, আপনি যদি পাসও -l -করেন man। কমান্ড লাইনে প্রদত্ত এই বিকল্পের সাহায্যে আপনি আপনার টার্মিনাল manথেকে যে কোনও কিছু পড়তে পারেন display STDINসুতরাং
man -l - < file_name
এছাড়াও কাজ করবে (তবে সতর্কতা অবলম্বন manকরা কেবল পেজার নয়, তবে ফাইলের ইনপুটকেও পার্স করে এবং তাই ফাইলের সামগ্রী এবং প্রদর্শিত সামগ্রী পৃথক হতে পারে)।
সুতরাং কিভাবে STDIN, STDOUTএবং কমান্ড লাইন আর্গুমেন্ট ব্যাখ্যা করা হয় সব সংশ্লিষ্ট ডেভেলপার আপ হয়।
আমি আশা করি আমার উত্তরটি বিষয়গুলি পরিষ্কার করতে পারে।
man -l - < file_nameকরতেmanব্যাখ্যা করেSTDINআর্গুমেন্ট হিসাবে, কিন্তু এটা আমার সিস্টেমের মধ্যে ব্যর্থSTDERR:man -l - < tee man: invalid option -- l man, version 1.6c