Existe uma maneira mais simples de criar um link simbólico para um arquivo no diretório atual do que digitando o caminho de arquivo completo?

0

Eu sei que ao criar links simbólicos os caminhos deve ser absoluto ou relativo ao local de destino

Se eu estou fazendo um link em /usr/local/bin que aponta para um arquivo no diretório atual, existe uma maneira mais fácil - algo, por exemplo, que funciona com tab-completion no bash - do que fazer ...

ln -s $(pwd)/target_file /usr/local/bin/

...?
(Onde $(_something_) avalia o _something_ e o substitui no comando shell.)

    
por user3.1415927 05.11.2018 / 22:43

2 respostas

2

A conclusão de tabulação para arquivos funciona com a variável $PWD para mim:

bash-4.4$ touch bar baz
bash-4.4$ ln -s $PWD/ba<tab>
bar  baz
    
por 05.11.2018 / 23:10
2

Para concluir, algumas alternativas em zsh :

  • ~0 (ou ~+0 ) é uma alternativa ligeiramente mais curta para $PWD (e a conclusão do nome do arquivo funciona tão bem depois de $PWD/fi<Tab> do que depois de ~0/fi<Tab> ou $(pwd)fi<Tab> ); ~1 , ~2 ... são os diretórios anteriores em que você esteve, o sistema de conclusão também pode ser configurado para mostrar a você quais eram e ser expandido (em ~+<Tab> ).
  • Pode-se usar ln -s file(:A) /usr/local/bin , onde (:A) faz com que file seja expandido para seu caminho absoluto (lembre-se de que ele resolve os links simbólicos para seus destinos).

Observe também a opção -r / --relative do GNU ln :

ln -rs file /usr/local/bin/

Criaria um link simbólico /usr/local/bin/file que aponta (como um caminho relativo, talvez algo como ../../../home/you/file ) para o file no diretório atual, semelhante a:

ln -s "$(realpath -s --relative-to=/usr/local/bin file)" /usr/local/bin

(com GNU realpath ).

    
por 06.11.2018 / 00:00

Tags