%EB%A5%BC%20%ED%95%B4%EB%8B%B9%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%82%B4%EC%9A%A9%EC%9C%BC%EB%A1%9C%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C(%EC%98%88%3A%20%22%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%20%EB%B9%84%ED%8A%B8%20%EC%A0%9C%EA%B1%B0%22)%3F.png)
우분투 리눅스에는 다음과 같이 심각하게 손상된 심볼릭 링크가 많이 있습니다.
$ ls -l setup.conf
lrwxrwxrwx 1 ont ont 27 Aug 19 15:26 setup.conf -> '# Source it'$'\r''. ../setup.conf'
. ../setup.conf
이는 프로젝트의 모든 심볼릭 링크를 대상 파일에 대한 주석 및 소스 호출("")로 바꾸려고 시도한 결과입니다. 이들은 모두 # Source it\n. .../setup.conf
심볼릭 링크 비트가 포함된 실제 텍스트 파일입니다(예: " "). 이는 git과 windows를 사용하여 수행됩니다.
한 가지 이론적 수정은 "symlink 비트"를 제거하고 결과 텍스트 파일을 변경하지 않고 그대로 두는 것입니다. 그러나 그렇게 할 수 있는 방법은 없습니다. ( chmod
다른 도구에서는 이것을 "매달린 심볼릭 링크"로 보고 텍스트 파일에서 작동하는 것을 거부합니다. 그 자체).
ls
또 다른 수정 방법은 위 명령에서 얻은 것과 동일한 내용 으로 새 파일을 수동으로 만드는 것입니다 . 지루하고 오류가 발생하기 쉽고 파일이 동일하지 않기 때문에 이 작업을 수행하지 않는 것이 좋습니다.
# Source it<newline>. ../setup.conf'
편집: 추가됨: 내용이 " " 인 setup.conf라는 일반 파일로 끝내고 싶습니다.
답변1
심볼릭 링크를 수정하고 싶은지 아니면 텍스트 파일로 바꾸고 싶은지 잘 모르겠습니다. 이 솔루션은 기호 링크를 텍스트 파일로 대체합니다.
find -type l -exec bash -c '
for f in "$@"
do
t=$(readlink "$f")
rm -f "$f"
printf "%s\n" "$t" >"$f"
done
' _ {} +
rm
printf
작성하는 대신 삭제, 수정을 통해 "$f.tmp.txt"
비파괴 테스트를 할 수 있습니다 "$f"
. ( .tmp.txt
나중에 텍스트 파일을 삭제하는 것을 잊지 마십시오.)
\r
더 쉽게 읽을 수 있도록 으로 바꾸 려면 \n
다음과 같이 할 수도 있습니다.
printf "%s\n" "${t//'$'\r/\n''}" >"$f" # non-POSIX
printf "%s\n" "$t" | tr "\r" "\n" >"$f" # POSIX