Как изменить права доступа к файлам (например, сделать файлы скриптов исполняемыми) в Sublime Text 2?

Как изменить права доступа к файлам (например, сделать файлы скриптов исполняемыми) в Sublime Text 2?

При написании, например, скриптов оболочки я хочу изменить их разрешения (в первую очередьисполняемыйразрешения) из Sublime Text 2.

Как мне этого добиться?

решение1

Ниже приведена команда редактирования прав доступа общего назначения для файла, который в данный момент редактируется. Для более подробного объяснения плагинов и редактирования меню Sublime Text 2 см.эта почта.

Это добавитИзменить режимкоманда вРедактироватьmenu. При выборе этого параметра пользователю предлагается ввести допустимую строку аргумента для chmod (например, u+rwxили 755; по умолчанию используется текущая установленная строка из 4 восьмеричных цифр, например 0644), которая затем применяется к редактируемому файлу.

Скриншот панели ввода

ВыбиратьИнструменты » Новый плагин, вставьте следующее содержимое и сохраните как chmod.pyв ~/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)

Чтобы вставить пункт меню для этой команды, добавьте следующее ~/Application Support/Sublime Text 2/Packages/User/Main.sublime-menu, объединив его с существующим содержимым файла, если файл уже существует:

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

решение2

В принципе, он работает и под Linux, но statкоманда работает по-другому и показывает много информации, которая не нужна.

stat -c %a filename 

вместо этого сделает и вернет что-то вроде «644».

Связанный контент