Acabei seguindo uma abordagem um pouco diferente, de criar um novo tipo de arquivo - vamos chamá-lo de "link simulado (ulated)" - que contém o caminho (relativo) do arquivo a ser aberto e depois criado um script lida com isso.
Considere o seguinte cenário:
./dir1/dir11/foo.odt
./dir2/foo.odl
"odl" para "Link do OpenDocument". O conteúdo de "foo.odl" é:
../dir1/dir11/foo.odt
Você pode então criar o seguinte script para abrir *.odl
(adaptado da resposta de terdon):
#!/bin/bash
declare -a targets
for file in "$@"; do
targets+=( "$(readlink -f "$( dirname "$file" )"/"$( <"$file" )")" )
done
libreoffice "${targets[@]}"
(Caso você não queira usar readlink
porque ele seguirá o link caso o caminho assim especificado seja um symlink, você pode simplesmente ir com:)
#!/bin/bash
for file in "$@"; do
cd "$( dirname "$file" )"
libreoffice "$( <"$file" )"
done
Você pode associar esse script com .odl
arquivos no gerenciador de arquivos (como explicado na resposta de terdon). Eventualmente, você terá que criar um tipo mime para .odl
files e associá-lo ao script (faltando essa etapa no meu caso trabalhado, mas associou todos os arquivos de texto simples com o script, o que era claramente indesejável).
Por que eu preferi essa alternativa às oferecidas pelo PSkocik e pelo terdon, embora funcionem perfeitamente bem? Por três razões:
-
Nem todos os meus arquivos .odt
(e links para eles) têm essa estrutura que eu tenho que abri-los "no diretório do arquivo de destino". Desta forma, eu afetaria o procedimento de abertura apenas dos arquivos de interesse.
-
Os links simbólicos regulares do sistema funcionarão independentemente das configurações do meu computador atual. Isso significa que, se eu abrir um desses arquivos em um computador no qual eu não alterei as configurações para abrir .odt
arquivos com o meu script, ele será aberto de qualquer maneira e eu posso inadvertidamente atrapalhar os caminhos do meu script. hiperlinks dentro dele. Dessa forma, se o computador não estiver configurado para abrir .odl
arquivos, eles simplesmente não funcionarão, e terei que ir diretamente para os arquivos de destino.
-
Por último, caso eu mova ou renomeie alguns dos diretórios envolvidos, posso pesquisar e substituir facilmente os arquivos .odl
para corrigir os caminhos. (Isso também é possível com os links simbólicos, mas parece um pouco mais difícil).
Advertências: Acho que isso funcionará apenas para um caminho relativo bem formado, não redundante, fornecido no arquivo .odl
. Provavelmente, existe uma maneira de fazer as coisas de maneira mais robusta, no sentido de que funcionaria também com um caminho absoluto ou com um caminho relativo com alguma redundância.