কীভাবে does: w! সুডো টি% `কাজ করে?


27

আপনি যদি এমন কোনও ফাইল খুলেন যা আপনার কাছে ভিএম-তে লেখার অনুমতি নেই, তবে সিদ্ধান্ত নেবেন যে আপনাকে এটি পরিবর্তন করতে হবে, আপনি :w !sudo tee %
কীভাবে এই কাজ করতে পারে তা বুঝতে পারছি না এইভাবে ভিএম ছাড়িয়ে আপনার পরিবর্তনগুলি লিখতে পারেন। আপনি কি এটি ছড়িয়ে দিতে পারেন?
আমি এই :wঅংশটি বুঝি , এটি বর্তমান বাফারটিকে ডিস্কে লিখেছে, ধরেই নেওয়া হচ্ছে এর সাথে কোনও ফাইলের নাম ইতিমধ্যে যুক্ত আছে, তাই না?
আমিও বুঝতে পারি !কোনটি sudo teeআদেশটি কার্যকর করে এবং %বর্তমান বাফার সামগ্রীটি সঠিকভাবে উপস্থাপন করে?
তবে এটি কীভাবে কাজ করে তা এখনও বুঝতে পারছি না।

উত্তর:


30

কাঠামোর :w !cmdঅর্থ " কমান্ডের মাধ্যমে পাইপযুক্ত বর্তমান বাফার লিখুন "। উদাহরণস্বরূপ, আপনি এটি করতে পারেন :w !catএবং এটি মাধ্যমে বাফারটি পাইপ করবে cat।

এখন %হয় ফাইলের নাম বাফার সঙ্গে যুক্ত

সুতরাং :w !sudo tee %মাধ্যমে বাফারের বিষয়বস্তু পাইপ করা হবে sudo tee FILENAME। এটি কার্যকরভাবে ফাইলটিতে বাফারের সামগ্রীগুলি লিখে দেয়।



7

% বর্তমান বাফারের ফাইলের নাম উপস্থাপন করে, এর সামগ্রীগুলি নয়।

সুতরাং :w !sudo tee %বর্তমান বাফারটি পাইপ করুন sudo tee [currentfilename]।

tee রুট হিসাবে চালানো হচ্ছে, সুতরাং ফাইলটিতে তার স্টিডিন সংরক্ষণ করার জন্য লেখার অ্যাক্সেস রয়েছে।

Https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work- এ আরও দেখুন


2

একদম ঠিক না!

!commandফিল্টার কমান্ড হিসাবে কমান্ড চালায় , যা থেকে পাঠ্য আসে stdin, কিছু করে এবং আউটপুট দেয় stdout।

ব্যবহার করে w, আপনি ফাইলের বিষয়বস্তুতে ঠেলে stdinদিয়েছেন sudo tee %। %ভিআইএম-তে একটি বিশেষ রেজিস্টার যা বর্তমান ফাইলটির নাম ধারণ করে।

সুতরাং আপনি পেয়েছেন sudo tee FILENAME, যা tee stdinফাইলের সামগ্রী - বর্তমান ফাইলটিতে ধাক্কা দেবে ।


2
:!commandএটি একটি ফিল্টার (সিএফ। :h !) :w !commandনা থাকলেও এটি কেবল commandবর্তমান ফাইল stdin(সিএফ। :h :w_c) হিসাবে কার্যকর করে । বুদ্ধিমানভাবে: :w !sed /./dবর্তমান বাফারের সামগ্রীটি পরিবর্তন করে না। কিন্তু রেসিপি প্রকৃতপক্ষে না পুরোপুরি ঠিক অন্য কারণ জন্য, %পলান করা প্রয়োজন: :exec 'w !sudo tee ' . shellescape(expand('%', 1))। আসল কমান্ড ফাঁকা ফাইল ফাইলের সাথে কাজ করে না say
— সাটস ক্যাটসুরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.