¿Cómo puedo editar los permisos de los archivos (por ejemplo, hacer que los archivos de script sean ejecutables) desde Sublime Text 2?

¿Cómo puedo editar los permisos de los archivos (por ejemplo, hacer que los archivos de script sean ejecutables) desde Sublime Text 2?

Al escribir, por ejemplo, scripts de shell, quiero cambiar sus permisos (principalmente elejecutablepermiso) desde Sublime Text 2.

¿Cómo puedo lograr eso?

Respuesta1

El siguiente es un comando de edición de permisos de propósito general para el archivo que se está editando actualmente. Para obtener una explicación más detallada sobre los complementos y la edición del menú de Sublime Text 2, consulteesta publicación.

Agregará unModo de cambiocomando en elEditarmenú. Cuando se selecciona, se le pide al usuario que ingrese una cadena de argumento válida para chmod (por ejemplo, u+rwxo 755; el valor predeterminado es la cadena de permisos octales de 4 dígitos actualmente configurada como 0644), que luego se aplica al archivo que se está editando.

Captura de pantalla del panel de entrada

SeleccionarHerramientas » Nuevo complemento, inserte el siguiente contenido y guárdelo como chmod.pyen ~/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 insertar un elemento de menú para este comando, agregue lo siguiente a ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu, fusionándolo con el contenido del archivo existente si el archivo ya existe:

[
    {
        "id": "edit",
        "children":
        [
            {"id": "wrap"},
            { "command": "change_mode" }
        ]
    }
]

Respuesta2

Básicamente, también funciona en Linux, pero el statcomando funciona de manera diferente y muestra mucha información que no es necesaria.

stat -c %a filename 

lo hará en su lugar y devuelve algo como '644'.

información relacionada