Symlink

有沒有比輸入完整的文件路徑更簡單的方法來創建指向目前目錄中文件的符號連結?

  • November 5, 2018

我知道在創建符號連結時,路徑必須是絕對的,或者相對於目標位置

如果我正在創建指向/usr/local/bin目前目錄中文件的連結,是否有更簡單的方法 - 例如,可以在 bash 中使用製表符完成 - 比做…

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

…?

(Where$(_something_)評估_something_並將其替換到 shell 命令中。)

文件的製表符完成適用$PWD於我的變數:

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

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

  • ~0(or ~+0) 是一個稍微短一些的替代方案$PWD(並且文件名補全在 after 之後的效果$PWD/fi<Tab>與 after ~0/fi<Tab>, or一樣好$(pwd)fi<Tab>);~1, ~2… 是您之前訪問過的目錄,完成系統也可以配置為向您顯示它們曾經是哪些目錄並進行擴展(在 上~+<Tab>)。
  • 可以使用ln -s file(:A) /usr/local/bin, where(:A)導致file擴展到其絕對路徑(但請注意,它會將符號連結解析為目標)。

還要注意GNU的-r/選項:--relative``ln

ln -rs file /usr/local/bin/

將創建一個/usr/local/bin/file指向目前目錄中的符號連結(作為相對路徑,所以可能類似於../../../home/you/filefile,類似於:

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

(與 GNU realpath)。

引用自:https://unix.stackexchange.com/questions/479991