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