NautilusScriptsHowto
出自Ubuntu中文
原文出处:https://wiki.ubuntu.com/NautilusScriptsHowto
原文作者:UbuntuWiki
授权许可:
翻译人员:yongyi
校对人员:MillenniumDark
贡献者:
适用版本: 文章状态:等待翻译
attachment:IconsPage/IconNautilus.png The nautilus file manager is extensible through the use of scripts.
目录 |
Introduction
Purpose
With scripts you can do many things such as :
- make an enhanced "open with"-alike feature (open some files that match a filter in your preferred application
- make a zip of a directory and mail it
- open a terminal in the selected directory
- ...
all of this with a simple right click
Managing Nautilus scripts
attachment:nautilus_folder.png
You can find the Nautilus-scripts folder here :
~/.gnome2/nautilus-scripts
Adding scripts
- place your scripts in the nautilus-scripts folder
- name them accordingly to the label you want in the right-click context menu
- make them executable (`chmod +x my_script_name`)
That's it! :D
FIXME 完成以上翻译
{i} You will not have a `File->Scripts` nor see a `Scripts` entry in the context menu until you first add files there
{i}你不会看到 “文件” -> “脚本”菜单,直到你把你第一个脚本添加到 ~/.gnome2/nautilus-scripts 。
Removing scripts
- simply remove them from the nautilus-scripts folder
Setting rights to your scripts
attachment:IconsPage/IconWarning3.png
You may need to run some scripts as a root user, this is generally a bad idea, unless you
know what you are doing. Setting appropriate rights can be done thanks to the `chmod` command.
Scripting
What is a script ?
You can place in the nautilus several "scripts", they can be :
- binaries (compiled programs)
- shell scripts (bash, sh ...)
- ...
that is to say basically anything that can be run
Environment variables
Whenever a script is called, nautilus set some variables that can be used in your scripts. These are :
- `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS`
newline-delimited paths for selected files (only if local)
- `NAUTILUS_SCRIPT_SELECTED_URIS`
newline-delimited URIs for selected files
- `NAUTILUS_SCRIPT_CURRENT_URI`
current location
- `NAUTILUS_SCRIPT_WINDOW_GEOMETRY`
position and size of current window
Sample scripts
Notes: These scripts may be out of date. Use at your own risk
FIXME 翻译以上部分
Email the selected file
把选中文件Email出去
This one is really useful. How many times have you needed to find a file and then send it? And to be honest, from Evolution or mozilla-thunderbird this is not that simple. It is much easier to use Nautilus to find your file and then send it from there.
这个真的非常有用。不知道你经历过多少次,需要寻找一个文件,然后发送出去?老实地说,在 Evolution 或者 mozilla-thunderbird 里,这可并不容易。但使用 Nautilus 你可以非常容易地找到你的文件,然后就在那里发送出去。
#!/usr/bin/perl -w
# By John Russell
# This script sends the selected file(s) with your email client.
use strict;
my $MAILTO_URL="mailto:?";
my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
my $count = 0;
foreach my $file (@files)
{
if ( ! -f $file && ! -l $file )
{
my @dialog = ("gdialog","--title","Error","--msgbox", "\nError: Can not send $file. \n\n Only regular files can be mailed. ","200", "300");
system (@dialog);
}
else
{
$MAILTO_URL = $MAILTO_URL . "attach=" . $file . "&";
shift;
$count += 1;
}
}
if ($count > 0)
{
my @command = ("gnome-open", $MAILTO_URL);
system(@command);
}
Added by Darrell: I found that the mailto: syntax in the above does not work with mozilla-thunderbird. I have created the following amended version which seems to work with Thunderbird:
由Darrell补充:我发现上面的 mailto: 语法在mozilla-thunderbird 不起作用。我已经建立以下的修正版本,它应该可以在 Thunderbird 使用。
#!/usr/bin/perl -w
# By John Russell
# and hacked to work with thunderbird by Darrell
# This script sends the selected file(s) with mozilla-thunderbird.
use strict;
my $attach_string="\"attachment='";
my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
my $count = 0;
foreach my $file (@files)
{
if ( ! -f $file && ! -l $file )
{
my @dialog = ("gdialog","--title","Error","--msgbox", "\nError: Can not send $file. \n\n Only regular files can be mailed. ","200", "300");
system (@dialog);
}
else
{
$attach_string = $attach_string . "file://" . $file . ",";
shift;
$count += 1;
}
}
if ($count > 0)
{
$attach_string = $attach_string . "'\"";
# replace spaces with '%20' as demanded by mozilla/thunderbird
$attach_string =~ s/\s/%20/g;
# invoke shell script to call thunderbird differently depending on whether it's running already or not
my $command = ("~/scripts/thunderbird-email-attachments " . $attach_string);
system($command);
}
You will see there is also a shell script which is required, (~/scripts/thunderbird-email-attachments in my example above, don't put it in the nautilus-scripts directory, otherwise it will show up in the context menu):
你会看到这也有一个 shell 脚本是必需的,(在我上面的例子中的 ~/scripts/thunderbird-email-attachments,不要放在 nautilus-scripts 目录,否则它会在关联(context)菜单显示)
#!/bin/sh # if thunderbird is already running open a compose window in the running instance if `ps xc | grep -q mozilla-thunder`; then exec mozilla-thunderbird -a Mozilla-Thunderbird -remote "xfeDoCommand(ComposeMessage,$1)" # else start a new instance with the compose window only else exec mozilla-thunderbird -compose $1 fi
Mount ISO
挂载 ISO
Mount an ISO image, from Nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
从 Nautilus 挂载一个 ISO 镜像。carney1979案: 这脚本不久将会被升级到可以使用包含空格的文件名。
#!/bin/bash # #By modprobing loop it makes sure that the module is loaded and ready for #use. If it is already loaded then nothing will happen. modprobe loop for I in `echo $*` do foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"` sudo mount -o loop -t iso9660 $I /media/iso done done exit0
Unmount ISO
卸载 ISO
Unmount an iso image, from nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
从 nautilus 卸载一个 iso 镜像。carney1979案: 这脚本不久将会被升级到可以使用包含空格的文件名。
#!/bin/bash # for I in `echo $*` do foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"` sudo umount $I done done exit0
Set file read-only
设置文件只读
Change file-permission to read-only.
修改文件权限为只读。
#!/bin/bash chmod ugo-wx $*
Edit file with gedit with root-privileges
以 root 权限来用 gedit 编辑文件
Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
carney1979案: 这脚本不久将会被升级到可以使用包含空格的文件名。
#!/bin/bash # for I in `echo $*` do foo=`gksudo -u root -k -m "enter your password for root terminal access" /bin/echo "got r00t?"` sudo gedit $I done done exit0
Open Nautilus with root-privileges here
直接以 root 权限打开 Nautilus
#!/bin/bash # root-nautilus-here # opens a root-enabled instance of a nautilus window in selected location # requires sudo privileges and gksudo, which may involve security risks. #Install in your ~/Nautilus/scripts directory. # # Placed in the public domain by Shane T. Mueller 2001 # Fixes provided by Doug Nordwall # # 2004.04.18 -- keith@penguingurus.com - Added gksudo usage to provide popup # password window if sudo has expired. Line only echos got # root to std output. But gksudo updates your sudo access # privs, so running nautilus with sudo will succeed # without asking for a password. foo=`gksudo -u root -k -m "enter your password for nautilus root access" /bin/echo "got r00t?"` sudo nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI
Run file with root privileges
以 root 权限运行文件
carney1979案: 这脚本不久将会被升级到可以使用包含空格的文件名。
#!/bin/bash # for I in `echo $*` do /usr/bin/gksudo $I done done exit0
Open search window here
直接打开搜索窗口
#!/bin/sh # From Johnathan Bailes # This script opens a gnome-search-tool in the directory you select. # # Distributed under the terms of GNU GPL version 2 or later # # Install in your ~/Nautilus/scripts directory. # You need to be running Nautilus 1.0.3+ to use scripts. cd $NAUTILUS_SCRIPT_CURRENT_URI exec gnome-search-tool
Open terminal here
直接打开终端
#!/bin/bash # # This script opens a gnome-terminal in the directory you select. # # Distributed under the terms of GNU GPL version 2 or later # # Install in ~/.gnome2/nautilus-scripts or ~/Nautilus/scripts # You need to be running Nautilus 1.0.3+ to use scripts. # When a directory is selected, go there. Otherwise go to current # directory. If more than one directory is selected, show error. if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then set $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS if [ $# -eq 1 ]; then destination="$1" # Go to file's directory if it's a file if [ ! -d "$destination" ]; then destination="`dirname "$destination"`" fi else zenity --error --title="Error - Open terminal here" \ --text="You can only select one directory." exit 1 fi else destination="`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed 's/^file:\/\///'`" fi # It's only possible to go to local directories if [ -n "`echo "$destination" | grep '^[a-zA-Z0-9]\+:'`" ]; then zenity --error --title="Error - Open terminal here" \ --text="Only local directories can be used." exit 1 fi cd "$destination" exec x-terminal-emulator
Hide or Show Hidden Files
隐藏或显示隐藏文件
#!/bin/sh # When hidden files (.emacs, etc) are hidden, shows "Show Hidden Files" option. # When hidden files are shown, shows "Hide Hidden Files" option. # Uses gconf to toggle between the two Nautilus options. # Should be placed in ~/.gnome2/nautilus-scripts/ with executable permission. OLDSTATE=$(gconftool-2 --get "/desktop/gnome/file_views/show_hidden_files") if [ "$OLDSTATE" == "false" ] ; then NEWSTATE="True" mv ~/.gnome2/nautilus-scripts/Show\ Dot\ Files ~/.gnome2/nautilus-scripts/Hide\ Dot\ Files else NEWSTATE="False" mv ~/.gnome2/nautilus-scripts/Hide\ Dot\ Files ~/.gnome2/nautilus-scripts/Show\ Dot\ Files fi gconftool-2 --set "/desktop/gnome/file_views/show_hidden_files" --type boolean $NEWSTATE
Note: You can do the same without a script by pressing CTRL+H under Nautilus
注意:在 Nautilus 下,你可以不使用脚本而按下Ctrl + H 也达到同样效果。
Links
