একই ফাইলটিতে পুনর্নির্দেশ কেন ফাইল কেটে যায়?


11

সাধারণত আউটপুট পুনর্নির্দেশের জন্য আমরা একটি ভিন্ন ফাইল ব্যবহার করি।

উদাহরণ স্বরূপ :

cat < first > temp

এই কমান্ডে প্রথমের বিষয়বস্তুগুলি স্ট্যান্ডার্ড আউটপুটের পরিবর্তে অস্থায়ীভাবে পুনঃনির্দেশিত হয়।

তাহলে আমি যদি একই ফাইলটির নাম ব্যবহার করি তবে এটি কেন ফাইল কেটে যাবে?

কেন এটি একই ফাইলটি ওভাররাইট করতে পারে না?

cat < first > first 

উত্তর:


19

আপনি যখন I / O পুনঃনির্দেশটি ব্যবহার করেন, কমান্ডটি কার্যকর হওয়ার আগে উভয় "ইনপুট" এবং "আউটপুট" ফাইলটি শেল দ্বারা খোলা হয়। ওভাররাইটিংয়ের জন্য একটি ফাইল খোলার আগে লেখার আগে এটি কেটে ফেলা সমান। ফলাফল: catইনপুটটিতে একটি খালি ফাইল দেখে ...


0

কারণ সাধারণ ক্ষেত্রে এটি পরিচালনা করা খুব জটিল হবে। কেবল নিম্নলিখিত উদাহরণটি বিবেচনা করুন:

একটি প্রোগ্রাম লাইন দ্বারা একটি ফাইল লাইন পড়ে এবং প্রতিটি লাইন দু'বার আউটপুট করে। এখন এটি দ্বিতীয় ফাইল ছাড়া কাজ করার জন্য (যেমন একই ফাইলে) প্রোগ্রামটি পড়তে হবে এমন লাইনগুলির বেশিরভাগ (সমস্ত) বাফার করতে হবে, কারণ তারা পড়ার আগে অন্যথায় ওভাররাইট করা হবে।

বিষয়গুলি সরল রাখতে সাধারণত প্রোগ্রামগুলি একটি গৌণ, অস্থায়ী ফাইল ব্যবহার করে যা তারা শেষ হয়ে গেলে মূলটির উপরে চলে যায়। এটি sed -i(ইনলাইন) কীভাবে কাজ করে তা উদাহরণস্বরূপ ।


0

সাধারণত এটিতে পুনর্নির্দেশের বাক্য গঠনটি ক্ষেত্রে হওয়া উচিত cat first > temp। এর অর্থ হ'ল catএর আউটপুট firstফাইলের কাছে প্রেরণ করা হয় temp। আপনার বক্তব্যের ক্ষেত্রে cat < first > temp, আউটপুটটি catপুনরায় পাঠানোর সময় পুনরায় পাঠানোর সময় শেষ হয়নি। কিছুই ফলাফল খুঁজে পাওয়া যায় না।

তবে catকোনও ফাইলকে ইনগ্রেট করা এবং আউটপুট অন্য ফাইলে পুনঃনির্দেশিত করা বেসিকের চেয়ে আলাদা নয় cp


cat < first > tempঠিক কাজ করে।
জানু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.