모든 도트 파일과 디렉터리를 기호적으로 연결합니다.

모든 도트 파일과 디렉터리를 기호적으로 연결합니다.

, 및 와 ~/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.

관련 정보