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+rwx
o 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.
SeleccionarHerramientas » Nuevo complemento, inserte el siguiente contenido y guárdelo como chmod.py
en ~/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 stat
comando 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'.