स्वचालित रूप से किसी विशेष फ़ाइल के लिए निष्पादन योग्य बिट पर कैसे सेट करें


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 के लिए भी निर्देश हैं।


तब तक आपका ऑटोरैड क्या है?
डस्टिन

@ डस्टिन ऑटोरैड मेरे vimrc (AFAIK, इसके सिर्फ एक बूलियन, इसके दोनों
तरफ

1

जितना मुझे अपमानजनक उत्तर पसंद है , यह VIM का कारण बनता है मुझे निम्न चेतावनी देता है:

W16: चेतावनी: संपादन शुरू होने के बाद से फ़ाइल "test.sh" का तरीका बदल गया है

निम्नलिखित (कुछ हद तक) कोड उस समस्या को हल करता है (एक अजगर-सक्षम विम की आवश्यकता है):

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निर्धारित किया है, आह, मुझे शायद यह चेतावनी नहीं मिली है ।
डेबोबर्ट

मुझे भ्रम है कि चेतावनी को चुप करा देता है, क्योंकि यह ठीक उसी काम को करने के लिए लगता है - बस
चोद के

हाँ। लेकिन किसी कारण से, पायथन फ़ंक्शन मोड-चेंज डिटेक्शन को ट्रिगर नहीं करता है। मेरे सेटअप का एक हिस्सा हो सकता है, हालांकि मुझे लगता है कि मैं उबंटू स्थापित पर एक नहीं बल्कि वेनिला विम चला रहा हूं।
सोरेन लोर्बोर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.