zshrc
、Xresources
、~/dot
などのファイルとディレクトリを含むフォルダemacs.d
があるとします。 ~
内のすべてのシンボリックリンクを作成するにはどうすればよいですか。ただし、シンボリックリンクはドット(.zshrc
&c。)で始まりますか?
そして、最初の質問への回答によって作成されたであろう既存のシンボリックリンクをすべて削除するにはどうすればよいですか? (つまり、ドットファイルをどのようにアンインストールしますか?)
シンボリックリンクの作成
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
zsh
について言及しているので:
autoload zmv # best in ~/.zshrc:
(cd && zmv -sL -v 'dot/(*)' '.$1')
それらを削除するには:
(cd && files=(dot/*(:t)) && rm -vf -- .$^files(N@))
(rm
実装でサポートされていない場合は、冗長にするために-v
を削除してください)
dot/foo
ファイルごとに、シンボリックリンクの場合(.foo
を指しているかどうかに関係なく)dot/foo
が削除されます。または、次のようにすることもできます。
rm .*(@e'<[[ $REPLY -ef dot/${REPLY#.} ]]>')
つまり、.foo
と同じファイル(シンボリックリンク解決後)の場合は、old/foo
シンボリックリンクを削除します。