![모든 도트 파일과 디렉터리를 기호적으로 연결합니다.](https://linux55.com/image/122950/%EB%AA%A8%EB%93%A0%20%EB%8F%84%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EA%B8%B0%ED%98%B8%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%97%B0%EA%B2%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
, 및 와 ~/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
.