Abra a pasta pai de um link simbólico via clique com o botão direito?

2

Podemos abrir uma pasta pai de qualquer arquivo usando o script nautilus como

#!/bin/bash 

nautilus ""

Se eu fizer este script no link simbólico que está no ~ / Desktop, ele abrirá o Desktop.

Como posso recodificar este script para abrir o pai do link simbólico do arquivo real está vinculado a? Por exemplo, se eu tiver um arquivo de link simbólico Desktop/my-doc.doc vinculado ao arquivo doc localizado em /media/myharddisk/my-doc.doc , o script abrirá / media / myharddisk / e NÃO ~ / Desktop em Nautilus.

    
por ubuntico 27.01.2014 / 09:46

3 respostas

1

Tente isto:

#!/bin/bash

file="$(readlink -f "")"
nautilus "${file%/*}"
    
por kiri 27.01.2014 / 09:53
2

Salve este script como Open symlink's parent dir no seu ~/.gnome2/nautilus-scripts/ . Ao clicar com o botão direito do mouse, você terá uma opção em "scripts", "Dir de pai do Open symlink".

você pode abrir o diretório pai de qualquer link simbólico dele. link simbólico pode ser de qualquer arquivo ou pasta. Se não for um link simbólico, você receberá um aviso.

#!/bin/bash

if [ -h $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ]; then
    var="$(readlink $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)"
else
    zenity --info --text="$(basename "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS") is not a symbolic link"
    exit 0
fi
if [ -d "$var" ]; then
    var2="$var"
else
    var2="$(dirname "$var")"
fi
nautilus "$var2"

Se houver mais de um link flexível

Você pode usar readmultilink desta resposta por Radu Rădeanu . Em seguida, o script poderá alcançar o diretório pai navegando por vários soft links de uma só vez.

Você precisa copiar e colar a função em seu código e usar readmultilink em vez de readlink .

    
por souravc 27.01.2014 / 11:27
1

Existe um feed de linha extra no final de "NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" que causa problemas quando tento adicionar aspas duplas para a detecção de arquivo correta.

Eu mudei a boa sugestão de souravc para que funcione perfeito para mim (alimentação de linha no final removido, aspas duplas adicionadas para que não haja problemas com nomes de arquivos com espaços).

#!/bin/bash

# Remove line feed at the end of the path
selectedPath="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS%?}"

# Check if the selected file is a symbolic link
if [ -h "$selectedPath" ]; then
    var="$( readlink "$selectedPath" )"
else
    zenity --info --text="$( basename "$selectedPath" ) is not a symbolic link"
    exit 0
fi

# Open the parent directory of the symbolic link 
nautilus "$( dirname "$var" )"
    
por TuKsn 08.04.2014 / 11:50