আপনি, ডিরেক্টরিটিরglen
মালিক ( আপনার তালিকাতে ফাইলটি দেখুন )। ডিরেক্টরি হ'ল ফাইলগুলির একটি তালিকা এবং আপনার এই তালিকাটি পরিবর্তন করার অনুমতি রয়েছে (যেমন ফাইলগুলি যুক্ত করুন, ফাইলগুলি সরিয়ে ফেলুন, আবার নিজের করে দেওয়ার জন্য মালিকানা পরিবর্তন করুন ইত্যাদি)। আপনি সরাসরি ফাইলের বিষয়বস্তু পরিবর্তন করতে সক্ষম নাও হতে পারেন, তবে আপনি পুরোটি ফাইলটি পড়তে এবং আনলিংক (অপসারণ) করতে পারেন এবং পরে নতুন ফাইল যুক্ত করতে পারেন। 1 কেবল আগে এবং পরে সাক্ষ্যদান করা, এটি ফাইলের পরিবর্তিত হয়েছে বলে মনে হতে পারে ।.
ভিম অদলবদল ফাইলগুলি ব্যবহার করে এবং ফাইলগুলিকে পানির নিচে ঘুরিয়ে দেয়, যাতে এটি আপনাকে শেলের মতো একই ফাইলটিতে লেখার জন্য কেন মনে হয় তা ব্যাখ্যা করে তবে এটি একই জিনিস নয়। 2
সুতরাং, ভিম কী করে তা এখানে নেমে আসে:
cat temp > .temp.swp # copy file by contents into a new glen-owned file
echo nope >> .temp.swp # or other command to alter the new file
rm temp && mv .temp.swp temp # move temporary swap file back
1 উইন্ডোজ এবং ইউনিটগুলির মধ্যে ফাইল অনুমতি পরিচালনার ক্ষেত্রে এটি একটি গুরুত্বপূর্ণ পার্থক্য। উইন্ডোজে, আপনার কাছে লেখার অনুমতি নেই এমন ফাইলগুলি মুছে ফেলার পক্ষে সাধারণত কেউ সক্ষম হয় না।
2 আপডেট: মন্তব্যগুলিতে উল্লিখিত হিসাবে, ভিম মালিকানা পরিবর্তনের জন্য আসলে এইভাবে তা করেন না, কারণ temp
ফাইলের ইনোড নম্বরটি পরিবর্তিত হয় না ( ls -li
আগে এবং পরে কোমরিং )। ব্যবহার করে strace
আমরা দেখতে পাই ঠিক কী vim
হয়। মজার অংশটি এখানে:
open("temp", O_WRONLY|O_CREAT|O_TRUNC, 0664) = -1 EACCES (Permission denied)
unlink("temp") = 0
open("temp", O_WRONLY|O_CREAT|O_TRUNC, 0664) = 4
write(4, "more text bla\n", 14) = 14
close(4) = 0
chmod("temp", 0664) = 0
এটি দেখায় যে এটি কেবল লিঙ্কমুক্ত হয় , তবে ফাইল বিবরণকারীটিকে এটি বন্ধ করে না temp
। এটি কেবল তার সম্পূর্ণ বিষয়বস্তু ( more text bla\n
আমার ক্ষেত্রে) ওভাররাইট করে । আমি অনুমান করি এটি কেন ইনোড নম্বর পরিবর্তন করে না তা ব্যাখ্যা করে।
ls -il
আগে এবং পরে চালিয়ে যাচ্ছিল ... যদিtemp
এর ইনোড নম্বরটি পরিবর্তিত হয় তবে আপনি জানেন যে এটি একই নামের একটি আলাদা ফাইল।