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
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.)
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> ). 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 ).
Tags symlink