Wenn ich z. B. Shell-Skripte schreibe, möchte ich deren Berechtigungen ändern (vor allem dieausführbarErlaubnis) aus Sublime Text 2 heraus.
Wie kann ich das erreichen?
Antwort1
Nachfolgend finden Sie einen allgemeinen Befehl zum Bearbeiten von Berechtigungen für die aktuell bearbeitete Datei. Eine ausführlichere Erläuterung zu Plugins und zum Bearbeiten des Sublime Text 2-Menüs finden Sie unterdieser Beitrag.
Es wird eineÄnderungsmodusBefehl imBearbeitenMenü. Wenn diese Option ausgewählt ist, wird der Benutzer aufgefordert, eine gültige Argumentzeichenfolge für chmod einzugeben (z. B. u+rwx
oder 755
; Standard ist die aktuell festgelegte 4-stellige oktale Berechtigungszeichenfolge wie 0644
), die dann auf die zu bearbeitende Datei angewendet wird.
WählenTools » Neues Plugin, fügen Sie den folgenden Inhalt ein und speichern Sie wie chmod.py
folgt ~/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)
Um ein Menüelement für diesen Befehl einzufügen, fügen Sie Folgendes hinzu ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu
und führen Sie es mit dem Inhalt der vorhandenen Datei zusammen, wenn die Datei bereits vorhanden ist:
[
{
"id": "edit",
"children":
[
{"id": "wrap"},
{ "command": "change_mode" }
]
}
]
Antwort2
Es funktioniert grundsätzlich auch unter Linux, allerdings stat
verhält sich der Befehl anders und zeigt zahlreiche Informationen an, die nicht benötigt werden.
stat -c %a filename
wird stattdessen ausgeführt und gibt etwas wie „644“ zurück.