নির্দিষ্ট ফাইলের জন্য স্বয়ংক্রিয়ভাবে এক্সিকিউটেবল বিটে কীভাবে সেট করবেন


10

আমি চাই যে আমি যখন একটি নির্দিষ্ট ফাইল তৈরি করব, ধরুন আমি এটি ভিএম এডিটারে তৈরি করি, তৈরি ফাইলটি তৈরি হওয়ার সাথে সাথে নির্বাহযোগ্য অনুমতি পাওয়া উচিত। আমি এটি চাই যেমন আমি অজগর ফাইল তৈরি করছি এবং স্পষ্টরূপে ফাইলটির জন্য অনুমতিগুলি সেট করতে চাই না তাই আমি কোনও উপায় চাই যাতে এক্সিকিউটেবল বিট সেট হয়ে যায় যত তাড়াতাড়ি আমি একটি নির্দিষ্ট এক্সটেনশন বা একটি নির্দিষ্ট সম্পাদক দিয়ে একটি ফাইল তৈরি করি।

উত্তর:


11

ভিমের জন্য, আপনার কাছে শক্তিশালী স্ক্রিপ্টিং উপলব্ধ। উদাহরণস্বরূপ, আমার .vimrc এ আমার রয়েছে:

" Stolen from http://www.debian-administration.org/articles/571
" Sets +x on stuff starting with the magic shebang.
au BufWritePost * if getline(1) =~ "^#!" | silent !chmod a+x <afile>

আপনি যদি কেবল ফাইল নাম দিয়ে এটি করতে চান তবে # সন্ধানের পরিবর্তে! লাইন, আপনি করতে পারেন:

au BufWritePost *.ext silent !chmod a+x <afile>     " untested

যে ডেবিয়ান প্রশাসন নিবন্ধ Emacs জন্য নির্দেশাবলী পাশাপাশি হয়েছে।


আপনার অটোরেড তখন সেট করা আছে?
ডাস্টিন

@ ডাস্টিন অটোর্যাডটি আমার ভিমার্কে (সত্য / অন / হ্যাঁ) সেট করা আছে (এএফআইএকেই, এটির কেবল একটি বুলিয়ান, এটি চালু বা বন্ধ)
ডার্বার্ট

1

আমি ডার্বার্টের উত্তরটি যতটা পছন্দ করি , তার কারণে ভিআইএম আমাকে নিম্নলিখিত সতর্কতা দেয়:

ডাব্লু 16: সতর্কতা: সম্পাদনা শুরু হওয়ার পরে "টেস্ট.শ" ফাইলের মোড পরিবর্তন হয়েছে

নিম্নলিখিত (কিছুটা দীর্ঘতর) কোডটি সেই সমস্যাটি সমাধান করে (পাইথন-সক্ষম ভিম প্রয়োজন):

function! SetExecutableBit()
python <<EOD
import vim
import os
import stat
filename = vim.current.buffer.name
mode = os.stat(filename).st_mode
os.chmod(filename, mode | stat.S_IXUSR)
EOD
endfunction

autocmd BufWritePost *
    \ if getline(1) =~ "^#!" | call SetExecutableBit()

আহ, আমি সম্ভবত যে সতর্কতা autoreadসেট করেছি সেটাকে পাই না ।
ডার্বোবার্ট

আমি বিভ্রান্ত হয়ে পড়েছি যে সতর্কতাটি স্থির করে দেয়, কারণ এটি ঠিক একই কাজটি করছে বলে মনে হচ্ছে
mod চমডের

হা. তবে কিছু কারণে পাইথন ফাংশন মোড-চেঞ্জ সনাক্তকরণকে ট্রিগার করে না। আমার সেটআপের এক বিস্ময়কর হতে পারে, যদিও আমি বিশ্বাস করি যে আমি উবুন্টু ইনস্টলের পরিবর্তে ভ্যানিলা ভিম চালাচ্ছি।
সেরেন ল্যাভবার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.