Come impostare automaticamente il bit eseguibile per un determinato file


10

Voglio che quando creo un determinato file, supponiamo che lo crei nell'editor vim, anche il file creato dovrebbe ottenere l'autorizzazione eseguibile quando viene creato. Lo voglio mentre sto creando alcuni file Python e non voglio impostare esplicitamente le autorizzazioni per il file, quindi voglio in qualche modo in modo che il bit eseguibile sia impostato non appena creo un file con una particolare estensione o con un particolare editor.

Risposte:


11

Per vim, hai a disposizione potenti script. Ad esempio, nel mio .vimrc ho:

" 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>

Se vuoi farlo solo con il nome del file, invece di cercare il #! linea, potresti fare:

au BufWritePost *.ext silent !chmod a+x <afile>     " untested

Quell'articolo su Debian Administration contiene anche istruzioni per EMACS.


a che cosa è impostata la tua autoread?
Spolverare il

@dustin autoread è impostato (true / on / yes) nel mio vimrc (AFAIK, è solo un booleano, è acceso o spento)
derobert

1

Per quanto mi piaccia la risposta di Derobert , fa in modo che VIM mi dia il seguente avvertimento:

W16: Avviso: la modalità del file "test.sh" è cambiata dall'inizio della modifica

Il seguente codice (un po 'più lungo) risolve quel problema (richiede un vim abilitato per 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()

Ah, probabilmente non ricevo quell'avvertimento come ho autoreadimpostato.
derobert il

Sono confuso che mette a tacere l'avvertimento, perché sembra fare esattamente la stessa cosa - solo chiamare uno script in pitone invece di chmod ...
derobert

Sì. Ma per qualche motivo, la funzione Python non attiva il rilevamento del cambio di modalità. Potrebbe essere una stranezza della mia configurazione, anche se credo che sto eseguendo un Vim piuttosto vaniglia sull'installazione di Ubuntu.
Søren Løvborg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.