可能重复:
如何自定义 Nautilus 中的上下文菜单?
我正在尝试Mark as executable
在 Nautilus 中创建右键单击命令,以加快工作流程。我想出了这个脚本:
#! /bin/bash
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
gksudo "chmod +x $file" &
done
但是我该如何让它工作呢?我现在有一个.sh
文件,但不知道把它放在哪里。
答案1
只需将此文件保存为“标记为可执行文件”,使其本身可执行,然后将其拖放到~/.gnome2/nautilus-scripts
它将显示在右键单击菜单的子菜单下Scripts
如果您打算将您拥有的文件(在您的主目录下)标记为可执行文件,则可能需要gksudo
从那里删除,否则,每次您通过右键单击菜单运行脚本时,它都会要求您输入密码...
但上面的脚本不适用于文件名包含空格的文件。为了使它适用于这些文件,您必须将脚本修改为以下内容:
#!/bin/bash
IFS_BAK=$IFS
IFS="
"
for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
if [[ "$line" = "" || "$line" = " " ]]; then
exit
else
chmod +x "$line"
fi
done
IFS=$IFS_BAK
IFS_BAK=
还,您可以拥有自己的“标记为可执行文件”条目。但是,为了启用此功能,您需要安装 python-nautilus 包:
sudo apt-get install python-nautilus
然后将此文件保存mark_as_executable.py
为~/.local/share/nautilus-python/extensions/
:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
if len(files) != 1:
return
file = files[0]
if file.get_uri_scheme() != 'file':
return
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
item.connect('activate', self.menu_activate_cb, file)
return item,
上述内容仅适用于单个文件,如果您想添加对多个文件的支持,则必须将其粘贴到 python 脚本中:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
for yourfile in files:
if yourfile.get_uri_scheme() != 'file':
return
item.connect('activate', self.menu_activate_cb, yourfile)
return item,
为了能够使用该功能,您还需要重新启动 nautilus:
nautilus -q
然后打开一个鹦鹉螺窗口。