Symlink
有沒有比輸入完整的文件路徑更簡單的方法來創建指向目前目錄中文件的符號連結?
我知道在創建符號連結時,路徑必須是絕對的,或者相對於目標位置
如果我正在創建指向
/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/file
)file
,類似於:ln -s "$(realpath -s --relative-to=/usr/local/bin file)" /usr/local/bin
(與 GNU
realpath
)。