例えばシェルスクリプトを書くとき、その権限(主に実行可能Sublime Text 2 内から (権限) を取得します。
どうすればそれを達成できるでしょうか?
答え1
以下は、現在編集中のファイルの一般的な権限編集コマンドです。プラグインとSublime Text 2メニューの編集に関する詳細な説明については、この郵便受け。
それはモードの変更コマンドの編集メニュー。選択すると、ユーザーは chmod に有効な引数文字列 (例:u+rwx
または755
。デフォルトは のような現在設定されている 4 桁の 8 進権限文字列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' のようなものが返されます。