我找到了一个我想使用的 nautilus 脚本。如何安装它?
答案1
假设您想要安装在浏览 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
设置脚本
现在我们已经满足了所有依赖关系,我们可以继续将脚本复制到我们的系统中。为此,我们首先在脚本文件夹中创建一个新文档,在 Ubuntu 13.04 及更高版本中为~/.gnome2/nautilus-scripts
。 ~/.local/share/nautilus/scripts/
这是一个隐藏文件夹。为了前往它,您必须打开文件管理器,按CTRL+L并将目录路径粘贴到位置栏中。
接下来我们将通过右键单击并选择创建一个新的空文档创建新文档→空文档。您可以随意命名,但要注意:您选择的标题将决定脚本条目稍后在 nautilus 上下文菜单中的显示方式。因此,最好为文档选择一个描述性名称:
在您选择的文本编辑器中打开新文档,然后将上面的代码框的内容复制并粘贴到其中。保存并退出文本编辑器。
使其可执行
此时,您的脚本已正确设置,但仍无法运行,因为系统尚未将其识别为可执行文件。要使其可执行,请右键单击您的文件并转到特性→权限. 勾选允许作为程序执行并关闭对话框:
用法
现在,您应该可以从 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")
每行代表一个键分配。第一个双引号部分指定操作,第二个部分指定分配的组合键。以分号开头的行是注释行,当前处于非活动状态。
为了给脚本分配快捷键,您必须在此文件中搜索脚本的名称,并通过删除分号来取消注释相应的行。然后继续输入您想要分配的键盘快捷键。
这些是可用的修饰符及其对应的键代码:
- CTRL=
<Primary>
- ALT=
<Alt>
- SHIFT=
<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 (https://askubuntu.com/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 脚本我曾经录制过这个答案的截屏。