是否有比键入完整文件路径更简单的方法来创建指向当前目录中文件的符号链接?

是否有比键入完整文件路径更简单的方法来创建指向当前目录中文件的符号链接?

我知道创建符号链接时路径必须是绝对路径,或者相对于目的地位置

如果我要建立一个/usr/local/bin指向当前目录中的文件的链接,是否有一种更简单的方法 - 例如,与 bash 中的制表符完成一起使用 - 比做...

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

...?
(其中$(_something_)计算_something_并将其替换为 shell 命令。)

答案1

文件的制表符补全适用$PWD于我的变量:

bash-4.4$ touch bar baz
bash-4.4$ ln -s $PWD/ba<tab>
bar  baz

答案2

为了完成,一些替代方案zsh

  • ~0(or ~+0) 是一个稍短的替代方案(并且文件名补全在 , or 后的效果与在, or后的效果$PWD一样好);, ... 是您之前所在的目录,完成系统也可以配置为向您显示它们是什么并展开(在 上)。$PWD/fi<Tab>~0/fi<Tab>$(pwd)fi<Tab>~1~2~+<Tab>
  • 可以使用ln -s file(:A) /usr/local/bin, where(:A)导致file扩展到其绝对路径(但请注意,它会解析到其目标的符号链接)。

另请注意GNU 的-r/选项:--relativeln

ln -rs file /usr/local/bin/

会创建一个/usr/local/bin/file符号链接(作为相对路径,所以可能类似于../../../home/you/file)指向file当前目录中的 ,类似于:

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

(与 GNU realpath)。

相关内容