abre um arquivo usando CDPATH e symlink

3

Para me movimentar rapidamente, adicionei um caminho ao CDPATH que contém links simbólicos para locais diferentes. Eu fiz isso adicionando a seguinte linha ao .bashrc:

export CDPATH=~/symlinks

Ao trabalhar com diretórios, tudo bem e eu posso acessar as pastas com links simbólicos de qualquer lugar.

Por exemplo, se eu fizer isso:

$ ln -s ~/path/to/folder ~/symlinks/folder

Posso apenas escrever:

$ cd folder

para entrar na pasta com links simbólicos, independentemente do meu diretório atual.

No entanto, quando eu crio um link simbólico para um arquivo e, em seguida, tento abri-lo com um editor, recebo um arquivo vazio, a menos que eu esteja no diretório do symlink.

Por exemplo, se eu fizer isso:

$ ln -s ~/path/to/file/filename ~/symlinks/filename

e, em seguida, escreva:

$ kwrite filename

Eu recebo um arquivo vazio, se eu não estiver na pasta de links simbólicos.

Eu quero acessar o arquivo de qualquer lugar, como posso conseguir isso?

    
por bug 20.08.2012 / 15:18

2 respostas

5

A resposta simples é que você não pode.

O que o CDPATH faz é que, se você digitar "cd folder", ele primeiro verifica se "folder" existe dentro do seu CDPATH; Caso contrário, ele fará o check-in da pasta em que você está no momento. Mas isso é específico para alterações no diretório; O kwrite não verifica o CDPATH e o AFAIK, não existe uma opção de configuração para fazer com que pareça em qualquer diretório específico.

O que você pode fazer é criar um pequeno script de shell que substitua o kwrite, assim:

#!/bin/sh

FILE=$1

if [ -f "$HOME/symlinks/$FILE" ] 
then
   kwrite "HOME/symlinks/$FILE"
else
   kwrite "$FILE"
fi

Em seguida, execute o script (que você poderia nomear, por exemplo, "akwrite") em vez de executar o kwrite diretamente.

    
por 20.08.2012 / 15:36
0

Você não pode.

O que você pode fazer é definir atalhos como variáveis de shell.

fn=~/path/to/file/filename
kwrite $fn

No zsh, você pode evitar confrontos de nomes com variáveis shell usando hashes de diretório. Esses são aliases para nomes de arquivos que são expandidos após ~ (como nomes de usuário). Apesar de seus nomes, esses aliases não precisam apontar para um diretório, eles podem ser expandidos para texto arbitrário.

hash -d fn=~/path/to/file/filename
kwrite ~fn
    
por 21.08.2012 / 01:40