Symlink em todos os lugares

1

Existe alguma maneira de eu ligar um arquivo em particular para que ele apareça em todos os diretórios do sistema?

Então, se eu fizer um link simbólico para o /tmp/scratch

Não importa onde eu esteja, posso digitar vi scratch ?

    
por themirror 13.12.2013 / 17:15

4 respostas

7

Desde que Joseph R queria que eu expandisse, eu vou. Se você usar o VIM (porque é isso que eu sei mais que Vi) você pode adicionar isso ao seu arquivo ~/.vimrc .

if @% == "scratch"
    silent edit /tmp/scratch
endif

Tada, agora você tem scratch em todos os lugares!

    
por 13.12.2013 / 17:39
4

Uma solução mais robusta seria usar um alias no seu .bashrc :

alias viscrtch='vi /tmp/scratch'

Dessa forma, viscrtch pode ser usado para editar /tmp/scratch de qualquer lugar dentro do sistema de arquivos.

Se você deseja adicionar argumentos de linha de comando, use uma função de shell:

viscrtch(){ vi "$@" /tmp/scratch; }

Chame como

viscrtch your_options_here

Mesmo que você encontre uma maneira de ligar simbolicamente um arquivo a todos os diretórios do sistema, desestimulo você a fazê-lo: não é nem sustentável nem prático.

    
por 13.12.2013 / 17:17
0

Como outros observaram, provavelmente não é a melhor solução, mas aqui está uma maneira de vincular todos os diretórios abaixo do atual.

#!/bin/bash

lnfile="/tmp/scratch"
for Dir in $(find ./* -type d);
do
    ln -s $lnfile $Dir
done
    
por 13.12.2013 / 20:36
0

find / -type d -exec ln -s -T /tmp/scratch scratch {} \;

    
por 13.12.2013 / 20:51