특정 파일에 대한 실행 비트를 자동으로 설정하는 방법


10

특정 파일을 만들 때 vim 편집기에서 파일을 만들면 생성 된 파일이 생성 될 때 실행 가능한 권한을 가져야한다고 가정합니다. 일부 파이썬 파일을 만들 때 파일을 명시 적으로 지정하고 파일에 대한 권한을 명시 적으로 설정하고 싶지 않으므로 실행 파일이 설정되어 특정 확장명 또는 특정 편집기로 파일을 만들 때 실행 가능한 비트가 설정되도록하십시오.

답변:


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

즉, 데비안 관리에 대한 문서 뿐만 아니라 EMACS에 대한 지침이 있습니다.


자동 읽기는 무엇으로 설정되어 있습니까?
dustin

@dustin 자동 읽기가 내 vimrc (AFAIK, 부울, 켜기 또는 끄기)에 설정되어 있습니다 (true / on / yes)
derobert

1

derobert의 답변을 좋아하는 한 VIM은 다음과 같은 경고를 표시합니다.

W16 : 경고 : 편집이 시작된 후 "test.sh"파일의 모드가 변경되었습니다

다음 코드는이 문제를 해결합니다 (파이썬 가능 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()

아, 아마 내가 autoread설정 한대로 경고가 표시되지 않습니다 .
derobert

나는 chmod 대신 파이썬 스크립트를 호출하는 것과 똑같은 일을하는 것처럼 보이기 때문에 경고를 끄는 것이 혼란 스럽다.
derobert

예. 그러나 어떤 이유로 파이썬 함수는 모드 변경 감지를 트리거하지 않습니다. 우분투 설치에서 다소 바닐라 Vim을 실행하고 있다고 생각하지만 설정에 문제가있을 수 있습니다.
Søren Løvborg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.