Como posso editar permissões de arquivo (por exemplo, tornar arquivos de script executáveis) no Sublime Text 2?

Como posso editar permissões de arquivo (por exemplo, tornar arquivos de script executáveis) no Sublime Text 2?

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+rwxou 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.

Captura de tela do painel de entrada

SelecioneFerramentas » Novo plugin, insira o seguinte conteúdo e salve como chmod.pyem ~/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 statcomando 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'.

informação relacionada