심볼릭 링크의 정확성을 검증하기 위해 bash 스크립트를 준비 중입니다. 다음과 같은 경우 진단하고 싶습니다.
2) 심볼릭 링크가 심볼릭 링크를 가리킬 때 진단하는 데 큰 문제가 있습니다.
readlink 를 사용하려고 했지만 뾰족한 심볼릭 링크 이름 대신 심볼릭 링크 체인의 최종 대상을 반환합니다. -f
매개 변수 없이 실행하려고했지만 도움이되지 않았습니다. 그리고 find 와의 조합 이 나에게 좋지 않은 결과를주었습니다 ...
누구든지이 문제를 도와 줄 수 있습니까?
아래에 현재 버전에 내 코드를 붙여 넣었습니다.
failed=0
for file in path/*
do
if [[ -L "$file" ]]
then
if [[ ! -a "$file" ]]
then
echo "Symlink '$file' is broken -- target object doesn't exists."
failed=1
elif [[ -L "$(readlink -f $file)" ]]
then
echo "Symlink '$file' points to another symlink: '$(readlink $file)'"
failed=1
fi
fi
done
exit $failed
최신 정보
파일 구조 테스트 ( symlinks.sh 는 bash 스크립트에 대해 설명 함) :
문제 설명에서 전이 체인 끝의 끊어진 링크를 처리하는 방법이 명확하지 않습니다. 오류를보고하고 계속 진행하겠습니다.
#!/bin/sh
rc=0
for file in path/*; do
if [ -L "$file" ]; then
nfile=$file
while [ -L "$nfile" ]; do
nfile=$(cd $(dirname "$nfile"); abspath $(readlink "$nfile"))
done
if ! [ -r "$nfile" ]; then
echo "$0: $file eventually resolves to nonexistent target $nfile" >&2
rc=1
else
# FIXME: maybe avoid doing this needlessly?
rm "$file"
ln -s "$nfile" "$file"
fi
fi
done
exit "$rc"
심볼릭 링크 (재귀 적으로 등)에 대한 심볼릭 링크가 최종 타겟에 대한 심볼릭 링크로 대체되기를 원한다는 것을 올바르게 이해하고 있습니까? 이 스크립트는 해결하는 모든 심볼릭 링크를 다시 작성한다는 점에서 다소 과도하지만 그렇게합니다. 불필요한 일을 피하기 위해 이것을 최적화하는 것은 연습으로 남겨집니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다