Wie kann ich in Sublime Text 2 Dateiberechtigungen bearbeiten (z. B. Skriptdateien ausführbar machen)?

Wie kann ich in Sublime Text 2 Dateiberechtigungen bearbeiten (z. B. Skriptdateien ausführbar machen)?

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+rwxoder 755; Standard ist die aktuell festgelegte 4-stellige oktale Berechtigungszeichenfolge wie 0644), die dann auf die zu bearbeitende Datei angewendet wird.

Screenshot des Eingabefelds

WählenTools » Neues Plugin, fügen Sie den folgenden Inhalt ein und speichern Sie wie chmod.pyfolgt ~/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-menuund 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 statverhä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.

verwandte Informationen