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