কেন "ফাইল ফাইল বাছাই করুন" ফাইলটির সমস্ত সামগ্রী সরিয়ে ফেলবে?


0

আজ আমি সাজ্ট কমান্ড শিখছি।

আমি এটি দেখতে পাচ্ছি, আমি ব্যবহার করতে পারি

sort file1 > file2

বাছাই করা ফাইলটি ফাইল 2-তে ইনজেক্ট করতে

তবে আমি যখন ব্যবহার করি

sort file1 > file1

ফাইল 1 খালি হয়ে যায়!

কেন ?!

আমি জানি যে আমি বাছাই করা ফাইল -1 কে ফাইল 1 এ সাজানোর জন্য -o পতাকা ব্যবহার করতে পারি।

তবে দ্বিতীয় কমান্ড কেন একটি খালি ফাইল তৈরি করে?

উত্তর:


7

শেল দ্বারা আউটপুট পুনঃনির্দেশ sortকমান্ড চালানোর আগে ফাইলের বিষয়বস্তু সাফ করে ।

থেকে man bash:

কমান্ড কার্যকর করার আগে, শেল দ্বারা ব্যাখ্যা করা একটি বিশেষ স্বরলিপি ব্যবহার করে এর ইনপুট এবং আউটপুট পুনর্নির্দেশ করা যেতে পারে। [...]

আউটপুট পুনর্নির্দেশের ফলে ফাইলটির নাম লেখার জন্য শব্দের প্রসারিত হওয়ার ফলাফল খোলা থাকে [...]। ফাইল উপস্থিত না থাকলে, এটি তৈরি করা হয়; যদি এটি বিদ্যমান থাকে তবে এটি শূন্য আকারে কাটা হবে।


সুতরাং বাছাই করা একটি খালি ফাইল একটি ফাঁকা ফাইল লিখুন।
জেন

1
@ জেন অন্তত এটি দ্রুত হবে। :-)
ড্যানিয়েল বেক

ফাইলটি খালি রাখার এটি সত্যিই একটি সহজ উপায় যা এটির শেল আপনি রাখতে চান। কেবল '> এটি ফাইল করুন
জেন

আমি এখন একটি সমস্যার মুখোমুখি হয়েছি, কারণ এই পদ্ধতিটি একটি খালি ফাইল তৈরি করে। কমান্ড লাইনের মাধ্যমে আমি এই ফাইলটি কীভাবে সম্পাদনা করব? আমি কিছু শব্দ বদলাতে চাই চাই পছন্দ করুন।
জেন

1
@ জেন যদি এটি সেড সম্পর্কে man sedহয় তবে এটি প্রথম পৃষ্ঠায় আপনাকে আসলে সহায়তা করবে।
ড্যানিয়েল বেক

0

ড্যানিয়েল বেক যেমন ব্যাখ্যা করেছেন যে কেন এটি ব্যর্থ হয়।

ওপি চাইবে সেই কাজটি করার একটি উপায় এখানে।

sort file1 | tee file1

টি একটি টি-আকৃতির পাইপ যা ফাইলটিতে বাফারটি লিখতে পারে এবং বাফারটিকে পরবর্তী পাইপে আউটপুট হিসাবে পাস করতে পারে, এখানে আমাদের কেবল তার অর্ধ শক্তি ব্যবহার করতে হবে।


3
সাবধান, যদিও। যদি প্রথম কমান্ডটি পুরো ফাইলটি বাফার করার পরিবর্তে একটি স্ট্রিম হিসাবে পড়ে ( sortদ্বিতীয়টি না করে তবে অন্যরা তা না করে), তবে আপনার অনুরূপ সমস্যা হবে।
বব

@ بابি, আমি আপনাকে 'সেড' এর মতো ধারণা পেয়েছি, সুতরাং কীভাবে আমি একটি ফাইল নিরাপদে একটি কমান্ড লাইনে পরিবর্তন করতে পারি?
জেন

আমি জেনেরিক পদ্ধতির জন্য আপনার একমাত্র বিকল্প সন্দেহ করি (যেমন কমান্ড নিজেই কোনও উপায় সরবরাহ করে না) হ'ল ম্যানুয়ালি একটি অস্থায়ী বাফার তৈরি করা, যেমন একটি টেম্প ফাইল, এবং হয় এই বাফারকে লিখুন + এটি আবার অনুলিপি করুন বা ফাইলটি অনুলিপি করুন এবং কপি থেকে পড়ুন।
বব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.