Ao escrever, por exemplo, scripts de shell, quero alterar suas permissões (principalmente asexecutávelpermissão) de dentro do Sublime Text 2.
Como posso conseguir isso?
Responder1
A seguir está um comando de edição de permissões de uso geral para o arquivo que está sendo editado no momento. Para uma explicação mais detalhada sobre plug-ins e edição do menu Sublime Text 2, consulteesta postagem.
Ele adicionará umAlterar modocomando noEditarcardápio. Quando selecionado, o usuário é solicitado a inserir uma sequência de argumentos válida para chmod (por exemplo, u+rwx
ou 755
; o padrão é a sequência de permissões octais de 4 dígitos atualmente definida, como 0644
), que é então aplicada ao arquivo que está sendo editado.
SelecioneFerramentas » Novo plugin, insira o seguinte conteúdo e salve como chmod.py
em ~/Application Support/Sublime Text 2/Packages/User/
:
import sublime, sublime_plugin, subprocess
def chmod(v, e, permissions):
subprocess.call( [ "chmod", permissions, v.file_name() ] )
def stat(filename):
proc = subprocess.Popen( [ "stat", "-f", '%Mp%Lp', filename ], stdout=subprocess.PIPE )
return str(proc.communicate()[0]).strip()
class ChangeModeCommand(sublime_plugin.TextCommand):
def run(self, edit):
if sublime.platform() != 'osx':
return
fname = self.view.file_name()
if fname == None:
sublime.message_dialog("You need to save this buffer first!")
return
perms = stat(fname)
def done(permissions):
chmod(self.view, edit, permissions)
sublime.active_window().show_input_panel(
"permissions to apply to the file " + fname + ": ", perms, done, None, None)
Para inserir um item de menu para este comando, adicione o seguinte a ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu
, mesclando com o conteúdo do arquivo existente se o arquivo já existir:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "change_mode" }
]
}
]
Responder2
Basicamente funciona também no Linux, mas o stat
comando funciona de forma diferente e mostra inúmeras informações que não são necessárias.
stat -c %a filename
fará isso e retornará algo como '644'.