Answers:
假设您要安装在浏览Ask Ubuntu时发现的以下脚本:
#!/bin/bash
## Sample Script 0.1
## Dependencies: notify-osd
notify-send "Sample nautilus script" "You Selected $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
依存关系
您会注意到的第一件事是,许多脚本不仅会立即可用。有时它们取决于您可能已安装或未安装的其他软件包。在这种情况下,我们的脚本取决于notify-osd
,默认情况下Ubuntu附带了。
在其他发行版中,情况可能并非如此,您必须在使用脚本之前安装依赖项。如果依赖项是官方存储库的一部分,则可以使用轻松安装它apt-get
,例如:
sudo apt-get install notify-osd
设置脚本
现在我们已经满足了所有依赖性,我们可以继续并将脚本复制到我们的系统中。要做到这一点,我们首先创建我们的脚本文件夹,这是一个新的文档~/.gnome2/nautilus-scripts
或 ~/.local/share/nautilus/scripts/
在Ubuntu 13.04及更高版本。这是一个隐藏的文件夹。为了访问它,您将必须打开文件管理器,按CTRL+ L并将目录路径粘贴到位置栏中。
接下来,我们将通过右键单击并选择创建新文档 → 空文档来创建一个新的空文档。随便命名,但要提防:选择的标题是脚本条目稍后在nautilus上下文菜单中的显示方式。因此,最好为文档选择一个描述性名称:
在您选择的文本编辑器中打开新文档,然后继续将上面代码框的内容复制并粘贴到其中。保存它并退出文本编辑器。
使它可执行
此时,您的脚本已正确设置,但仍无法正常运行,因为系统尚未将其识别为可执行文件。要使其可执行,请右键单击您的文件,然后转到Properties → Permissions。设置“ 允许以程序执行 ”复选框,然后关闭对话框:
用法
现在,您应该能够从nautilus上下文菜单访问脚本。只需右键单击您选择的文件,然后转到脚本 -> 脚本名称(此处:示例脚本)。单击条目以对所选文件执行脚本:
为脚本分配键盘快捷键
可以通过编辑Nautilus的键盘加速器文件来分配Nautilus脚本的键盘快捷键。在Ubuntu 12.04及更低版本中,该文件位于下~/.gnome2/accels/nautilus
。在较新的版本中,此文件已移至~/.config/nautilus/accels
。请注意,您的脚本仅在重新启动Nautilus(执行nautilus -q
,然后通过单击其启动器再次启动Nautilus)之后才会显示在加速器文件中。
加速器文件的语法乍一看可能有点让人不知所措,但实际上非常简单。看看这个摘录,例如:
; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
每行代表一个键分配。第一个双引号段指定了操作,第二个双引号段指定了键组合。以分号开头的行已注释,当前处于非活动状态。
为了给脚本分配快捷方式,您将不得不在该文件中搜索脚本的名称,并通过删除分号取消注释相应的行。然后继续输入您要分配的键盘快捷键。
这些是可用的修饰符及其对应的键代码:
<Primary>
<Alt>
<Shift>
您可以使用xev找到所有其他键的有效键代码。
这是您必须修改上面的部分将示例脚本分配给ALT+的方式SHIFT + S:
; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
(gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "<Alt><Shift>s")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
在Ubuntu 12.04(以及更高版本)上,Nautilus有时会覆盖加速器文件,然后才能进行任何更改。因此,最好在Nautilus不在运行(nautilus -q
)时执行您所做的所有更改。无论哪种方式,您都必须重新启动Nautilus才能查看更改。
自动化安装
该Nautilus脚本将自动为您安装Nautilus脚本。请查看评论,以了解幕后情况:
#!/bin/bash
# AUTHOR: Glutanimate (/ubuntu//users/81372/)
# LICENSE: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# NAME: Nautilus Scripts Installer
#
# DESCRIPTION: This script will install Nautilus scripts on Ubuntu 12.04 and above.
# Note: scripts of the same name in the destination folder will be
# overwritten without warning
# general purpose notification function
gui_notify(){
notify-send -i gnome-app-install "Nautilus Scripts Installer" "$1"
}
# check if any files selected
if [[ -z "$@" ]]
then
gui_notify "Error: No files selected."
exit 1
fi
RELEASE="$(lsb_release -r | cut -f2)" # detect Ubuntu release
if [[ "$RELEASE" = "12.04" ]] # set script folder accordingly
then
ScriptFolder="$HOME/.gnome2/nautilus-scripts"
else
ScriptFolder="$HOME/.local/share/nautilus/scripts/"
fi
for Script in "$@"; do
ScriptFilename="${Script##*/}" # get filename via bash string manipulation
cp "$Script" "$ScriptFolder/" # Move script to destination
chmod u+x "$ScriptFolder/$ScriptFilename" # Make it executable for the user
done
gui_notify "The following scripts have been installed: $@"
顺便说一句:这是我用来记录此答案的屏幕录像的nautilus脚本。