个人工具

“UbuntuHelp:NautilusScriptsHowto”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/NautilusScriptsHowto}}
 
{{From|https://help.ubuntu.com/community/NautilusScriptsHowto}}
 
{{Languages|UbuntuHelp:NautilusScriptsHowto}}
 
{{Languages|UbuntuHelp:NautilusScriptsHowto}}
[[Anchor(Top)]]
+
<<Include(Tag/ContentCleanup)>>
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNautilus.png
+
<<Include(Tag/TooLong)>>
The nautilus file manager is extensible through the use of scripts.
+
<<Anchor(Top)>>
 +
{{https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNautilus.png%7D%7D
 +
The Nautilus file manager is extensible through the use of scripts.
 
== Introduction ==
 
== Introduction ==
 
=== Purpose ===
 
=== Purpose ===
 
With scripts you can do many things such as :
 
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 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
 
* make a zip of a directory and mail it
 
* open a terminal in the selected directory
 
* open a terminal in the selected directory
 
* ...
 
* ...
 
all of this with a simple right click.
 
all of this with a simple right click.
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
=== Managing Nautilus scripts ===
 
=== Managing Nautilus scripts ===
https://help.ubuntu.com/community/NautilusScriptsHowto?action=AttachFile&do=get&target=nautilus_folder.png
+
{{https://help.ubuntu.com/community/NautilusScriptsHowto?action=AttachFile&do=get&target=nautilus_folder.png%7D%7D
All of your scripts are stored in the Nautilus-scripts folder - so to add a new script, simply place it there. You can find the Nautilus-scripts folder here :
+
All of your scripts are stored in the `nautilus-scripts` folder - so to add a new script, simply place it there. You can find the `nautilus-scripts` folder here:
 
<pre><nowiki>
 
<pre><nowiki>
 
     ~/.gnome2/nautilus-scripts
 
     ~/.gnome2/nautilus-scripts
 
</nowiki></pre>
 
</nowiki></pre>
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
==== Adding scripts ====
 
==== Adding scripts ====
* Open a text editor, copy/paste them into it, and save the script in you nautilus-scripts folder
+
* Open a text editor, copy/paste them into it, and save the script in your `nautilus-scripts` folder
 
* name them accordingly to the label you want in the right-click context menu
 
* name them accordingly to the label you want in the right-click context menu
 
* make them executable (`chmod +x my_script_name`, or right-click on the script, select properties, then permissions, and give allow it to be executable)
 
* make them executable (`chmod +x my_script_name`, or right-click on the script, select properties, then permissions, and give allow it to be executable)
第27行: 第29行:
 
{i} You will not have a `File->Scripts` nor see a `Scripts` entry in the context menu until you first add files there
 
{i} You will not have a `File->Scripts` nor see a `Scripts` entry in the context menu until you first add files there
 
==== Removing scripts ====
 
==== Removing scripts ====
* simply remove them from the nautilus-scripts folder
+
Simply remove them from the `nautilus-scripts` folder.
 
==== Setting rights to your scripts ====
 
==== Setting rights to your scripts ====
https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconWarning3.png
+
{{https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconWarning3.png%7D%7D
You may need to run some scripts as a root user, this is generally a bad idea, unless you <br> know what you are doing. Setting appropriate rights can be done thanks to the `chmod` command.
+
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.
 
'''''CAUTION-''''' you might want to set the preferences in Nautilus/Gedit/Whatever_else_you_are_opening_as_root so as to let you know instantly whether or not you are currently in the root-application.  i.e. a yellow background in root-gedit and nautilus, instead of the normal white....
 
'''''CAUTION-''''' you might want to set the preferences in Nautilus/Gedit/Whatever_else_you_are_opening_as_root so as to let you know instantly whether or not you are currently in the root-application.  i.e. a yellow background in root-gedit and nautilus, instead of the normal white....
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
== Scripting ==
 
== Scripting ==
 
=== What is a script ? ===
 
=== What is a script ? ===
You can place in the nautilus several "scripts", they can be :
+
Scripts can be
 
* binaries (compiled programs)
 
* binaries (compiled programs)
 
* shell scripts (bash, sh ...)
 
* shell scripts (bash, sh ...)
 
* ...
 
* ...
 
that is to say basically anything that can be run
 
that is to say basically anything that can be run
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
=== Environment variables ===
 
=== Environment variables ===
Whenever a script is called, nautilus set some variables that can be used in your scripts. These are :  
+
Whenever a script is called, Nautilus sets some variables that can be used in your scripts. These are:  
 
* `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS`
 
* `NAUTILUS_SCRIPT_SELECTED_FILE_PATHS`
 
newline-delimited paths for selected files (only if local)
 
newline-delimited paths for selected files (only if local)
第51行: 第53行:
 
* `NAUTILUS_SCRIPT_WINDOW_GEOMETRY`
 
* `NAUTILUS_SCRIPT_WINDOW_GEOMETRY`
 
position and size of current window  
 
position and size of current window  
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
== Sample scripts ==
 
== Sample scripts ==
'''Notes: These scripts may be out of date. Use at your own risk'''
+
'''Note: These scripts may be out of date. Use at your own risk.'''
 
=== Email the selected file ===
 
=== Email the selected file ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
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.
 
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.
 
<pre><nowiki>
 
<pre><nowiki>
第145行: 第147行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Mount ISO ===
 
=== Mount ISO ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
Mount an ISO image, from Nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
Mount an ISO image, from Nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
<pre><nowiki>
 
<pre><nowiki>
第162行: 第164行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Unmount ISO ===
 
=== Unmount ISO ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
Unmount an iso image, from nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
Unmount an iso image, from nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
<pre><nowiki>
 
<pre><nowiki>
第176行: 第178行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Set file read-only ===
 
=== Set file read-only ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
Change file-permission to read-only.
 
Change file-permission to read-only.
 
<pre><nowiki>
 
<pre><nowiki>
第184行: 第186行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Edit file with gedit with root-privileges ===
 
=== Edit file with gedit with root-privileges ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
<pre><nowiki>
 
<pre><nowiki>
第203行: 第205行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Open Nautilus with root-privileges here ===
 
=== Open Nautilus with root-privileges here ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
<pre><nowiki>
 
<pre><nowiki>
 
     #!/bin/bash
 
     #!/bin/bash
第231行: 第233行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Run file with root privileges ===
 
=== Run file with root privileges ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
Note from carney1979 - this script will be updated to work with filenames containing spaces soon.
 
<pre><nowiki>
 
<pre><nowiki>
第249行: 第251行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Open search window here ===
 
=== Open search window here ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
<pre><nowiki>
 
<pre><nowiki>
 
     #!/bin/sh
 
     #!/bin/sh
第264行: 第266行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Open terminal here ===
 
=== Open terminal here ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
<pre><nowiki>
 
<pre><nowiki>
 
     #!/bin/bash
 
     #!/bin/bash
第305行: 第307行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Hide or Show Hidden Files ===
 
=== Hide or Show Hidden Files ===
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 +
(doesn't work on Hardy Heron)
 
<pre><nowiki>
 
<pre><nowiki>
 
     #!/bin/sh
 
     #!/bin/sh
第324行: 第327行:
 
Note:  You can do the same without a script by pressing CTRL+H under Nautilus
 
Note:  You can do the same without a script by pressing CTRL+H under Nautilus
 
----
 
----
[[Top Back to top]]
+
[[UbuntuHelp:[Top|Back to top]]]
 
== Links ==
 
== Links ==
* [[UbuntuWiki:Nautilus_Scripts|Nautilus_Scripts]]
+
* [[UbuntuHelp:Nautilus_Scripts|Nautilus_Scripts]]
* [http://g-scripts.sourceforge.net/]
+
* [[http://g-scripts.sourceforge.net/]]
* [http://mundogeek.net/nautilus-scripts/]
+
* [[http://mundogeek.net/nautilus-scripts/]]
[[category:CategoryDocumentation]] [[category:CategoryCleanup]]
+
----
 +
[[category:CategorySoftwareDefault]] [[category:Category]] Software
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2008年10月19日 (日) 16:35的版本

<<Include(Tag/ContentCleanup)>> <<Include(Tag/TooLong)>> <<Anchor(Top)>> {{https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconNautilus.png%7D%7D 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. [[UbuntuHelp:[Top|Back to top]]]

Managing Nautilus scripts

{{https://help.ubuntu.com/community/NautilusScriptsHowto?action=AttachFile&do=get&target=nautilus_folder.png%7D%7D All of your scripts are stored in the `nautilus-scripts` folder - so to add a new script, simply place it there. You can find the `nautilus-scripts` folder here:

     ~/.gnome2/nautilus-scripts

[[UbuntuHelp:[Top|Back to top]]]

Adding scripts

  • Open a text editor, copy/paste them into it, and save the script in your `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`, or right-click on the script, select properties, then permissions, and give allow it to be executable)

That's it! {i} You will not have a `File->Scripts` nor see a `Scripts` entry in the context menu until you first add files there

Removing scripts

Simply remove them from the `nautilus-scripts` folder.

Setting rights to your scripts

{{https://help.ubuntu.com/community/IconsPage?action=AttachFile&do=get&target=IconWarning3.png%7D%7D 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. CAUTION- you might want to set the preferences in Nautilus/Gedit/Whatever_else_you_are_opening_as_root so as to let you know instantly whether or not you are currently in the root-application. i.e. a yellow background in root-gedit and nautilus, instead of the normal white.... [[UbuntuHelp:[Top|Back to top]]]

Scripting

What is a script ?

Scripts can be

  • binaries (compiled programs)
  • shell scripts (bash, sh ...)
  • ...

that is to say basically anything that can be run [[UbuntuHelp:[Top|Back to top]]]

Environment variables

Whenever a script is called, Nautilus sets 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 [[UbuntuHelp:[Top|Back to top]]]

Sample scripts

Note: These scripts may be out of date. Use at your own risk.

Email the selected file

[[UbuntuHelp:[Top|Back to top]]] 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.

    #!/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:

    #!/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):

    #!/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

[[UbuntuHelp:[Top|Back to top]]] Mount an ISO image, from Nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

[[UbuntuHelp:[Top|Back to top]]] Unmount an iso image, from nautilus. Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

[[UbuntuHelp:[Top|Back to top]]] Change file-permission to read-only.

    #!/bin/bash

    chmod ugo-wx $*

Edit file with gedit with root-privileges

[[UbuntuHelp:[Top|Back to top]]] Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/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

Note from blazoner - A much simpler alternative that works with filenames containing spaces is:

    #!/bin/sh
    gksudo "gedit $NAUTILUS_SCRIPT_SELECTED_URIS"

Open Nautilus with root-privileges here

[[UbuntuHelp:[Top|Back to top]]]

    #!/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 -- [email protected] - 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

Note from blazoner - A much simpler alternative:

    #!/bin/sh
    ### root-nautilus-here
    gksudo "nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI"

Run file with root privileges

[[UbuntuHelp:[Top|Back to top]]] Note from carney1979 - this script will be updated to work with filenames containing spaces soon.

    #!/bin/bash
    #
    for I in `echo $*`
    do
       /usr/bin/gksudo $I
       done
    done
    exit0

Note from blazoner - A much simpler alternative that works with filenames containing spaces and also opens folders (in nautilus) as root is:

    #!/bin/sh
    gksudo "gnome-open $NAUTILUS_SCRIPT_SELECTED_URIS"

Open search window here

[[UbuntuHelp:[Top|Back to top]]]

    #!/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

[[UbuntuHelp:[Top|Back to top]]]

    #!/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

[[UbuntuHelp:[Top|Back to top]]] (doesn't work on Hardy Heron)

    #!/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


[[UbuntuHelp:[Top|Back to top]]]

Links


Software