Tente isto:
#!/bin/bash
file="$(readlink -f "")"
nautilus "${file%/*}"
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.
Tente isto:
#!/bin/bash
file="$(readlink -f "")"
nautilus "${file%/*}"
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
.
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" )"