আমি এটি করার দুটি উপায় সম্পর্কে ভাবতে পারি।
প্রথম উপায়টি ধরে নিয়েছে যে আপনার নিজেরাই এই ফাইলটির মালিক, তবে ফাইলটি কেবলমাত্র প্রস্তুত।
আপনার নিজস্ব READONLY ফাইলের ওভাররাইটিংকে জোর করে লিখতে কমান্ড (: w!) তে কেবল vi এর উদ্দীপনা চিহ্ন প্রত্যয়টি ব্যবহার করুন। এটি অবশ্যই ধরে নিয়েছে যে আপনার বর্তমান ফোল্ডারে লেখার এবং সম্পাদনের অনুমতি রয়েছে।
:w!
vi এর ফলে মূল READONLY ফাইলটি ওভাররাইট করা হবে।
দ্বিতীয় উপায়টি ধরে নিয়েছে যে অন্য কেউ এই ফাইলটির মালিক, এবং আপনি সেই ফাইলটিতে আপনার পরিবর্তনগুলি সংরক্ষণ করতে চান।
এটি সম্পাদনের একটি উপায় হ'ল মূল ফাইলটিতে সম্পাদিত পরিবর্তনগুলি vi এর মধ্যে থেকে এডি স্ক্রিপ্ট হিসাবে সংরক্ষণ করা। এই এডি স্ক্রিপ্টটি অ্যাড লাইন সম্পাদক সহ vi এর বাইরে পরবর্তী সময়ে মূল ফাইলটিতে (বা অন্যান্য অনুরূপ ফাইলগুলি) প্রয়োগ করা যেতে পারে।
এডি স্ক্রিপ্ট হিসাবে বর্তমান সম্পাদনা সেশনটি সংরক্ষণ করার একটি উপায় হ'ল আসল ফাইলের নাম এবং সম্পাদিত ভিআই বাফারকে --ed কমান্ড লাইন সুইচের সাথে পৃথক ইউটিলিটি হিসাবে স্ট্যান্ডার্ড ইনপুট হিসাবে ইডি স্ক্রিপ্ট হিসাবে প্রদর্শন করুন pass
সুতরাং, সম্পাদিত ভিআই বাফার ধরে ধরে নিচের কাজগুলি সম্পাদন করুন
:.,$!diff --ed [original_file] -
এটি বর্তমান বাফারের সমস্ত রেখাকে (।, $!) প্রতিস্থাপন করে পৃথক উত্পন্ন এডি স্ক্রিপ্টের সাথে (ডিফ - - [মূল [ফাইলে] -) মূল ফাইলটিকে বর্তমান বাফারের সামগ্রীতে রূপান্তর করতে প্রয়োজনীয়। এরপরে আমরা এই এডি স্ক্রিপ্টটি কোনও নিরাপদ স্থানে সংরক্ষণ করতে এবং স্ক্রিপ্টটি মূল ফাইলের সংস্করণে প্রয়োগ করতে পারি যা আমরা লিখতে পারি। সুতরাং, স্ক্রিপ্টটি কোনও লিখনযোগ্য স্থানে সংরক্ষণ করুন, উদাহরণস্বরূপ, আপনার লগইন ফোল্ডার:
:w ~/my_ed_script
এখন vi থেকে প্রস্থান করুন এবং সম্পাদিত ফাইলটি পাওয়ার জন্য এই এডি স্ক্রিপ্টটি ব্যবহার করুন যা প্রথম স্থানে সংরক্ষণ করা যায়নি। বাশ কমান্ড লাইন প্রম্পট থেকে এটি কীভাবে সম্পাদন করা যায় তা এখানে '' ':
$ (cat ~/my_ed_script && echo 'w') | ed - writable_copy_of_original_file
এই কমান্ড সিকোয়েন্সটি কথায় যা করে তা হ'ল আমরা স্ক্রিপ্টটি কেটেট করে আলাদা করে তৈরি করি এবং এড রাইট কমান্ড, 'ডাব্লু' এর প্রতিধ্বনিত করে এডের স্ট্যান্ডার্ড ইনপুটটিতে প্রতিধ্বনিত করি। এড তারপরে এই স্ক্রিপ্টটি মূল ফাইলের লিপিযোগ্য অনুলিপিটিতে প্রয়োগ করে এবং সেই পরিবর্তিত বাফার পরিবর্তনগুলি ফাইলটিতে ফিরে লেখেন।
সুতরাং ভিআইতে সম্পাদিত কাজটি কোনও ফাইলে সংরক্ষণ করার একটি উপায় যা মূলত ভিআই, ডিফ এবং এড ব্যবহার করে অন্য কারও মালিকানাধীন ছিল।