Se eu criar um link para uma pasta, como posso obter dessa pasta vinculada para a pasta “real” do Nautilus?

5

Digamos que eu tenha uma pasta com várias camadas na minha pasta de documentos. E quero acesso fácil a ele da minha área de trabalho. Para fazer isso eu:

  • Vá para a pasta pai no Nautilus.
  • Clique com o botão direito do mouse no ícone da pasta e escolha Make Link
  • Recorte / cole a nova pasta "Vincular a ..." em minha área de trabalho.

Ótimo. E principalmente isso funciona bem para mim.

Mas suponha que eu queira chegar ao pai dessa pasta. É claro que posso chegar lá usando o caminho original - o que o Nautilus chama de "caminho do link", que eu vejo nas propriedades da pasta. Mas isso parece mais difícil do que deveria ser.

Como posso clicar na pasta e ir diretamente para o caminho do link?

    
por snowguy 13.09.2012 / 19:27

2 respostas

5

A partir de agora, não parece haver nenhuma implementação oficial desse recurso. Eu encontrei um pedido de recurso no Ubuntu Brainstorm, mas ele está aberto há um bom tempo . Pode ainda ser uma boa ideia votar em uma das sugestões fornecidas aqui.

Nesse meio tempo, você pode adicionar um script nautilus para executar essa tarefa. Basta copiar o script abaixo e colá-lo em um arquivo vazio com um nome de sua escolha em ~/.gnome2/nautilus-scripts/ (por exemplo, "Destino de link aberto").

#!/bin/bash
#Title=open-the-link-target-in-nautilus
#Title[fr]=ouvrir-le-repertoire-cible-dans-nautilus

#==============================================================================
#                     open-the-link-target-in-nautilus
#
#  author  : SLK
#  version : v2011051501
#  license : Distributed under the terms of GNU GPL version 2 or later
#
#==============================================================================
#
#  description :
#    nautilus-script : 
#    opens the target of a symbolic link of the selected object; if 
#    the target of the symbolic link is a file, opens the parent folder
#
#  informations :
#    - a script for use (only) with Nautilus. 
#    - to use, copy to your ${HOME}/.gnome2/nautilus-scripts/ directory.
#
#  WARNINGS :
#    - this script must be executable.
#    - package "zenity" must be installed
#
#==============================================================================

#==============================================================================
#                                                                     CONSTANTS

# 0 or 1  - 1: doesn't open but displays a message
DRY_RUN=0

#------>                                       some labels used for zenity [en]
z_title='open the link target in nautilus'
z_err_bin_not_found='not found\nEXIT'
z_no_object='no object selected\nEXIT'
z_info_target='path of the target'
z_choice_open_nautilus='open target in nautilus'
z_choice_open_file='open file with default application'
z_choice_display_filepath='open a messagebox to copy filepath'

#------>                                       some labels used for zenity [fr]
#z_title='ouvrir le repertoire cible dans nautilus'
#z_err_bin_not_found='introuvable\nEXIT'
#z_no_object='aucun objet selectionne\nEXIT'
#z_info_target='chemin de la cible'
#z_choice_open_nautilus='ouvrir la cible dans nautilus'
#z_choice_open_file='ouvrir le fichier avec le programme par defaut'
#z_choice_display_filepath='ouvrir une boite de dialogue affichant le chemin du fichier'


#==============================================================================
#                                                                INIT VARIABLES

# may depends of your system
DIRNAME='/usr/bin/dirname'
GREP='/bin/grep'
NAUTILUS='/usr/bin/nautilus'
PERL='/usr/bin/perl'
READLINK='/bin/readlink'
XDG_OPEN='/usr/bin/xdg-open'
ZENITY='/usr/bin/zenity'

#==============================================================================
#                                                                     FUNCTIONS

function check_bin
{
    err=0
    for bin in $* ; do
        if [ ! -x "$bin" ] ; then
            $ZENITY --error --title "$z_title" \
              --text="$bin $z_err_bin_not_found"
            err=1
        fi
    done
    [ $err -eq 1 ] && exit 1
}

#==============================================================================
#                                                                          MAIN

# lets check for required binaries :
[ -x "$ZENITY" ] || {
    echo "[ERROR] $ZENITY not found : EXIT"
    exit 1
}
check_bin "$DIRNAME" "$GREP" "$NAUTILUS" "$PERL" "$READLINK"

# lets check if object is selected :
[ "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" == "" ] && {
    $ZENITY --error --title "$z_title" \
      --text="$z_no_object"
    exit 1
}

# retrieve the first object selected :
first_object='echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" \
  | $PERL -ne 'print;exit''

# lets check if local path :
[ 'echo "$first_object" | $GREP -c "^/"' -eq 0 ] && {
    $ZENITY --error --title "$z_title" \
    --text="[ERROR] $first_object has not a valid path\nEXIT"
    exit 1
}


# retrieve the target path :
if [ -L "$first_object" ] ; then
    # symbolic link
    target='$READLINK -f "$first_object"'
else
    # not a symbolic link :
    target="$first_object"
fi

if [ -d "$target" ] ; then
    # target is a directory
    target_to_open_in_nautilus="$target"

else
    # target is a file, let's take the parent directory
    target_to_open_in_nautilus='$DIRNAME "$target"'

fi


### DRY RUN : noop

[ $DRY_RUN -eq 1 ] && {
    $ZENITY --info --title "$z_title" \
      --text="<b>DRY RUN</b>
first_object: $first_object
target: $target
target_to_open_in_nautilus: $target_to_open_in_nautilus"
    exit 0
}


### GO : let's open

choice='$ZENITY --list --title="$z_title" --width="500" --height="200" \
  --text="<b>$z_info_target</b>\n$target" \
  --radiolist --column "" --column "action" \
  TRUE "$z_choice_open_nautilus" \
  FALSE "$z_choice_open_file" \
  FALSE "$z_choice_display_filepath"'

case $choice in
    "$z_choice_open_nautilus")
        $NAUTILUS --no-desktop "$target_to_open_in_nautilus"
    ;;
    "$z_choice_open_file")
        $XDG_OPEN "$target"
    ;;
    "$z_choice_display_filepath")
        $ZENITY --entry --title="$z_title" --width="500" \
          --text="$z_info_target" \
          --entry-text="$target" &
    ;;
    *)
        exit 1
    ;;
esac


exit 0


### EOF

Em seguida, torne o script executável clicando com o botão direito em seu arquivo e indo para Properties --> Permissions e verificando Allow executing file as program .

O script agora deve aparecer como uma nova entrada de menu no menu de contexto do Nautilus. Basta clicar com o botão direito do mouse em um link e escolher Scripts --> whatever-you-named-your-script .

Origem do script : link

    
por Glutanimate 13.09.2012 / 21:05
4

A resposta do glutanimato é ótima. Se você não quiser as opções adicionais "abrir arquivo com o aplicativo padrão" & amp; "abra uma caixa de mensagem para copiar o caminho do arquivo" (o que você pode fazer clicando com o botão direito do mouse no link e escolhendo propriedades e copiando o destino do link) e, em seguida, use o seguinte script. É um truque quando eu peguei o roteiro original e cortei as coisas que não queria.

Compartilhamento, caso seja útil para outra pessoa:

#!/bin/bash
#Title=open-the-link-target-in-nautilus
#Title[fr]=ouvrir-le-repertoire-cible-dans-nautilus

#==============================================================================
#                     open-the-link-target-in-nautilus
#
#  revision: snowguy
#  version : v2012091401
#  author  : SLK
#  revision based on version : v2011051501
#  license : Distributed under the terms of GNU GPL version 2 or later
#
#==============================================================================
#
#  description :
#    nautilus-script : 
#    opens the target of a symbolic link of the selected object; if 
#    the target of the symbolic link is a file, opens the parent folder
#
#  informations :
#    - a script for use (only) with Nautilus. 
#    - to use, copy to your ${HOME}/.gnome2/nautilus-scripts/ directory.
#
#  WARNINGS :
#    - this script must be executable.
#    - package "zenity" must be installed
#
#==============================================================================

#==============================================================================
#                                                                     CONSTANTS

# 0 or 1  - 1: doesn't open but displays a message
DRY_RUN=0

#------>                                       some labels used for zenity [en]
z_title='open the link target in nautilus'
z_err_bin_not_found='not found\nEXIT'
z_no_object='no object selected\nEXIT'
z_info_target='path of the target'
z_choice_open_nautilus='open target in nautilus'
z_choice_open_file='open file with default application'
z_choice_display_filepath='open a messagebox to copy filepath'

#------>                                       some labels used for zenity [fr]
#z_title='ouvrir le repertoire cible dans nautilus'
#z_err_bin_not_found='introuvable\nEXIT'
#z_no_object='aucun objet selectionne\nEXIT'
#z_info_target='chemin de la cible'
#z_choice_open_nautilus='ouvrir la cible dans nautilus'
#z_choice_open_file='ouvrir le fichier avec le programme par defaut'
#z_choice_display_filepath='ouvrir une boite de dialogue affichant le chemin du fichier'


#==============================================================================
#                                                                INIT VARIABLES

# may depends of your system
DIRNAME='/usr/bin/dirname'
GREP='/bin/grep'
NAUTILUS='/usr/bin/nautilus'
PERL='/usr/bin/perl'
READLINK='/bin/readlink'
XDG_OPEN='/usr/bin/xdg-open'
ZENITY='/usr/bin/zenity'

#==============================================================================
#                                                                     FUNCTIONS

function check_bin
{
    err=0
    for bin in $* ; do
        if [ ! -x "$bin" ] ; then
            $ZENITY --error --title "$z_title" \
              --text="$bin $z_err_bin_not_found"
            err=1
        fi
    done
    [ $err -eq 1 ] && exit 1
}

#==============================================================================
#                                                                          MAIN

# lets check for required binaries :
[ -x "$ZENITY" ] || {
    echo "[ERROR] $ZENITY not found : EXIT"
    exit 1
}
check_bin "$DIRNAME" "$GREP" "$NAUTILUS" "$PERL" "$READLINK"

# lets check if object is selected :
[ "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" == "" ] && {
    $ZENITY --error --title "$z_title" \
      --text="$z_no_object"
    exit 1
}

# retrieve the first object selected :
first_object='echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" \
  | $PERL -ne 'print;exit''

# lets check if local path :
[ 'echo "$first_object" | $GREP -c "^/"' -eq 0 ] && {
    $ZENITY --error --title "$z_title" \
    --text="[ERROR] $first_object has not a valid path\nEXIT"
    exit 1
}


# retrieve the target path :
if [ -L "$first_object" ] ; then
    # symbolic link
    target='$READLINK -f "$first_object"'
else
    # not a symbolic link :
    target="$first_object"
fi

if [ -d "$target" ] ; then
    # target is a directory
    target_to_open_in_nautilus="$target"

else
    # target is a file, let's take the parent directory
    target_to_open_in_nautilus='$DIRNAME "$target"'

fi


### GO : let's open

$NAUTILUS --no-desktop "$target_to_open_in_nautilus"

exit 0


### EOF
    
por snowguy 14.09.2012 / 22:40