すべてのドットファイルとディレクトリをシンボリックにリンクします。

すべてのドットファイルとディレクトリをシンボリックにリンクします。

~/dotなどのいくつかのファイルやディレクトリを含むフォルダがあるとします。のすべての項目を指すシンボリックリンクを作成するにはどうすればよいですか?ただし、シンボリックリンクはドット(&c。)で始まりますか?zshrcXresourcesemacs.d~.zshrc

最初の質問に対する回答で作成された既存のシンボリックリンクをすべて削除するにはどうすればよいですか? (例:ドットファイルをどのように削除しますか?)

答え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詳細な説明のために削除)

dot/fooファイルの.fooシンボリックリンク(指定されているかどうかにかかわらずdot/foo)の場合は削除されます。または、次のことができます。

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

つまり.foo、それが一緒に行く場合old/foo

関連情報