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

Я использовал (не больше) apcupsd в течение приблизительно 5 лет в сочетании с Linux (RH), w2k3 и различные модели от APC и с различными установками. В течение того времени я замечаю, что для Linux отказывал приблизительно 1-2 раза в месяц, и клиенты w2k3 apcupsd отказались снова соединяться, если не перезапущено. Также я замечаю некоторые проблемы, работающие apcupsd в сочетании с w2k3 службами удаленных рабочих столов.

10
17.09.2012, 12:22
2 ответа

Для энергии Вы имеете мощные сценарии в наличии. Например, в моем .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 также.

11
27.01.2020, 20:02
  • 1
    , на что установлено Ваше авточтение затем? –  dustin 31.03.2013, 22:25
  • 2
    @dustin установлено (true/on/yes) в моем vimrc (AFAIK, его просто булевская переменная, его или на или прочь) –  derobert 01.04.2013, 18:45

Так, как мне нравится ответ derobert, он заставляет VIM давать мне соблюдающее предупреждение:

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

Следующий (несколько более длинный) код решает ту проблему (требует поддерживающей 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()
1
27.01.2020, 20:02
  • 1
    , я, вероятно, не получаю то предупреждение, как я имею autoread набор. –  derobert 27.12.2012, 00:25
  • 2
    я смущен, который заставляет предупреждение замолчать, потому что это, кажется, делает ту же самую вещь — просто вызов сценария Python вместо chmod... –  derobert 01.04.2013, 18:48
  • 3
    Да. Но по некоторым причинам, функция Python не инициировала обнаружение изменения режима. Могла бы быть причуда моей установки, хотя я полагаю, что выполняю довольно ванильный Vim на установке Ubuntu. –  Søren Løvborg 02.04.2013, 15:25

Теги

Похожие вопросы