কীভাবে 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.