符号链接所有点文件和目录

符号链接所有点文件和目录

假设我有一个~/dot包含一些文件和目录的文件夹,例如 zshrcXresourcesemacs.d。如何创建指向 中所有内容的符号链接~,但符号链接以点 ( .zshrc&c.) 开头?

我将如何删除由第一个问题的答案创建的所有现有符号链接? (即我如何卸载我的点文件。)

答案1

创建符号链接

cd ~/dot
for file in *; do
    ln -sf dot/"$file" ~/."$file"
done

删除符号链接

cd
for dotfile in .*; do
    test -L || continue
    target="$(readlink "$dotfile")"
    [[ $target =~ ^dot/ ]] && echo rm "$dotfile"
done

答案2

既然你提到zsh

autoload zmv # best in ~/.zshrc:
(cd && zmv -sL -v 'dot/(*)' '.$1')

要删除它们:

(cd && files=(dot/*(:t)) && rm -vf -- .$^files(N@))

-v如果您的rm实现不支持,请删除 for verbose)

对于每个dot/foo文件,.foo如果它是符号链接(无论它是否指向dot/foo),则会删除它。或者,你可以这样做:

rm .*(@e'<[[ $REPLY -ef dot/${REPLY#.} ]]>')

也就是说.foo,如果它与old/foo.

相关内容