web-dev-qa-db-ja.com

特定のファイルの実行可能ビットを自動的に設定する方法

特定のファイルを作成するときに、vimエディターで作成するとします。作成されたファイルは、作成時に実行可能アクセス許可も取得する必要があります。いくつかのpythonファイルを作成していて、ファイルのアクセス許可を明示的に設定したくないので、これが必要です。特定のファイルを作成するとすぐに実行可能ビットが設定されるようにする方法が必要です。拡張機能または特定のエディターを使用します。

10
mandeep

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の説明もあります。

11
derobert

私が好きなだけ derobertの答え 、それはVIMに次の警告を与えます:

W16:警告:編集開始以降、ファイル「test.sh」のモードが変更されました

次の(やや長い)コードはその問題を解決します(Python対応のvimが必要です):

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
Søren Løvborg