Як встановити виконуваний біт для певного файлу автоматично


10

Я хочу, щоб, коли я змушу створити певний файл, припустимо, я створюю його в редакторі vim, створений файл повинен отримати дозвіл на виконання файлів, коли він створюється. Я хочу цього, оскільки я створюю файли python і не хочу явно встановлювати дозволи для файлу, тому я хочу певним чином, щоб виконуваний біт встановлювався, як тільки я створю файл з конкретним розширенням або з певним редактором.

Відповіді:


11

Для vim у вас є потужні сценарії. Наприклад, у своєму .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

Ця стаття про адміністрування Debian також містить інструкції для EMACS.


для чого вам тоді встановлено автоматичне вивчення?
dustin

@dustin autoread встановлено (вірно / увімкнено / так) у моєму vimrc (AFAIK, його просто булеве, його ввімкнено або вимкнено)
derobert

1

Наскільки мені подобається відповідь Дероберта , це викликає в мене VIM таке попередження:

W16: Попередження: Режим файлу "test.sh" змінився з моменту початку редагування

Наступний (дещо довший) код вирішує цю проблему (потрібен vim із підтримкою Python):

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встановив.
дероберт

Я розгублений, що замовчує попередження, оскільки, здається, робить саме те саме - просто викликає скрипт python замість chmod ...
derobert

Так. Але чомусь функція Python не запускає виявлення зміни режиму. Можливо, це буде вигадкою моєї установки, хоча я вважаю, що я використовую досить ванільний Vim для установки Ubuntu.
Søren Løvborg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.