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


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.