প্রথমে cat
স্ট্যান্ডার্ড আউটপুট লিখুন, যা একটি টার্মিনাল নয়, এমনকি cat
ইন্টারেক্টিভ শেলটিতে কমান্ডের অংশ হিসাবে টাইপ করা হলেও । স্ট্যান্ডার্ড আউটপুট পুনঃনির্দেশিত হওয়া সত্ত্বেও আপনার যদি সত্যিই টার্মিনালে লেখার জন্য কিছু প্রয়োজন হয় তবে এটি এত সহজ নয় (কোন টার্মিনালটি আপনাকে নির্দিষ্ট করতে হবে এবং কোনও স্ক্রিপ্ট থেকে কমান্ডটি কার্যকর করা হলেও এটি একটি নাও থাকতে পারে), যদিও একটি কমান্ডটি কেবল পাইপলাইনের একটি অংশ হয়ে থাকলে (আব) স্ট্যান্ডার্ড ত্রুটি আউটপুট ব্যবহার করতে পারে। তবে যেহেতু আপনি ইঙ্গিত করেছেন যে cat
প্রকৃতপক্ষে কাজটি করে, তাই আমি মনে করি আপনি এমন পরিস্থিতি সম্পর্কে জিজ্ঞাসা করছেন না।
যদি আপনার উদ্দেশ্য হ'ল স্ট্যান্ডার্ড আউটপুটে যা লেখা থাকে তা পাইপলাইনে প্রেরণ করা হয়, তবে ব্যবহার cat
করা বিড়াল পুরষ্কারের অকেজো ব্যবহারের যোগ্য হবে , যেহেতু cat file | pipeline
(যেখানে pipeline
কোনও পাইপলাইন দাঁড়িয়েছে) হিসাবে আরও দক্ষতার সাথে করা যেতে পারে <file pipeline
। তবে আবার, আপনার কথাটি থেকে আমি অনুমান করি যে এটি আপনার উদ্দেশ্য নয়।
সুতরাং আপনি কীসের জন্য উদ্বিগ্ন তা এটি পরিষ্কার নয়। আপনি যদি cat
টাইপ করতে খুব দীর্ঘ খুঁজে পান তবে আপনি একটি- বা দ্বি-চরিত্রের উপন্যাস সংজ্ঞায়িত করতে পারেন (এখনও এমন কয়েকটি নাম রয়েছে যা স্ট্যান্ডার্ড ইউনিক্সে অব্যবহৃত থাকবে)। তবে আপনি যদি উদ্বেগ করছেন যে cat
এটি অকেজো চক্র ব্যয় করছে, আপনার উচিত হবে না।
যদি এমন কোনও প্রোগ্রাম থাকে null
যা কোনও আর্গুমেন্ট না নেয় এবং কেবল স্ট্যান্ডার্ড ইনপুটটিকে স্ট্যান্ডার্ড আউটপুট (পাইপলাইনের জন্য নিরপেক্ষ বস্তু) অনুলিপি করে, আপনি যা চান তা করতে পারেন <file null
। এ জাতীয় কোনও প্রোগ্রাম নেই, যদিও এটি লেখা সহজ হবে (কেবলমাত্র একটি লাইন main
ফাংশন সহ একটি সি প্রোগ্রামটি কাজটি করতে পারে), তবে cat
যুক্তি ছাড়াই কল করা (বা cat -
আপনি যদি স্পষ্ট করে বলতে চান) ঠিক তা করে।
যদি এমন কোনও nocat
প্রোগ্রাম ছিল যা সঠিকভাবে একটি ফাইলনাম আর্গুমেন্ট নেয়, ফাইলটি খোলার চেষ্টা করে, না পারলে অভিযোগ করে এবং অন্যথায় ফাইল থেকে স্ট্যান্ডার্ড আউটপুটে অনুলিপি করে এগিয়ে যায়, তবে আপনি যা চান তা ঠিক তাই হবে। এটি লেখার চেয়ে সামান্য কঠিন null
, মূল কাজটি ফাইলটি খোলার, পরীক্ষা করা এবং সম্ভবত অভিযোগ করা (আপনি যদি নিখুঁত হন তবে আপনি একটি পরীক্ষাও অন্তর্ভুক্ত করতে পারেন যে সেখানে একটি যুক্তি রয়েছে, এবং অন্যথায় অভিযোগও করতে পারেন)। কিন্তু আবার cat
, এখন একটি একক যুক্তি সরবরাহ করা ঠিক তা করে, তাই কোনও nocat
প্রোগ্রামের প্রয়োজন নেই ।
আপনি একবার nocat
প্রোগ্রাম লিখতে সফল হয়ে গেলে , কেন একটি যুক্তি দিয়ে থাম? কোডটিকে একটি লুপে মুড়িয়ে ফেলা for(;*argp!=NULL;++argp)
সত্যিই কোনও প্রচেষ্টা নয়, বাইনারিটিতে বেশিরভাগ মেশিনের নির্দেশাবলী যুক্ত করে এবং একটি ভুল সংখ্যক যুক্তি (যা আরও অনেক নির্দেশাবলীর হাতছাড়া করে) সম্পর্কে অভিযোগ না করা এড়িয়ে চলে। Voilà cat
ফাইলগুলির একটি প্রাথমিক সংস্করণ aten (সত্যি কথা বলতে আপনাকে এটিকে কিছুটা টুইট করতে হবে যাতে যুক্তি ছাড়াই এটি এরূপ আচরণ করে null
))
অবশ্যই সত্যিকারের cat
প্রোগ্রামে তারা কয়েকটি ঘণ্টা এবং হুইসেল যুক্ত করেছে, কারণ তারা সর্বদা করে। তবে সারমর্মটি হ'ল cat
ব্যয়গুলির "কনটেনটেশন" দিকটি প্রোগ্রামার বা মেশিন এটি কার্যকর করার জন্য মোটেই কোনও প্রচেষ্টা করে না। সত্য যে এই জাতীয় প্রোগ্রামের অস্তিত্বকে cat
সাবমিট করে null
এবং nocat
ব্যাখ্যা করে। cat
যদি ফলাফলটি পাইপলাইনে যায় তবে একক যুক্তির সাথে ব্যবহার করা এড়িয়ে চলুন , তবে এটি যদি কেবল টার্মিনালে ফাইল সামগ্রী প্রদর্শন করার জন্য ব্যবহার করা হয়, এমনকি আমি যে পৃষ্ঠাটির সাথে লিঙ্ক করেছি তা স্বীকার করে যে এটি একটি দরকারী ব্যবহার cat
, তাই দ্বিধা করবেন না।
আপনি পরীক্ষা করতে পারেন যে cat
হিপথেটিক্যাল nocat
কার্যকারিতা চারপাশে একটি সাধারণ লুপ দ্বারা বাস্তবায়িত হয়েছে , cat
বেশ কয়েকটি ফাইলের নাম দিয়ে কল করে যার মধ্যে একটি অবৈধ নাম, প্রথম অবস্থানে নেই: এই ফাইলটি উপস্থিত নেই বলে সরাসরি অভিযোগ করার চেয়ে cat
প্রথমে প্রিভিডিংকে ডাম্প করে বৈধ ফাইলগুলি এবং তারপরে অবৈধ ফাইল সম্পর্কে অভিযোগ করে (কমপক্ষে এটি আমার বিড়ালের সাথে আচরণ করে)।