Bash에서 심볼릭 링크를 가리키는 심볼릭 링크를 찾는 방법

Hunter_71

심볼릭 링크의 정확성을 검증하기 위해 bash 스크립트를 준비 중입니다. 다음과 같은 경우 진단하고 싶습니다.

  1. @symlink가 깨졌습니다.
  2. @symlink가 다른 @symlink를 가리킴-(심볼 링크 체인의 최종 대상으로 수정)
  3. @symlink가 다른 @symlink를 가리 킵니다.
  4. @symlinks 체인은 순환입니다.

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

MacOS에서 CurrentJDK 심볼릭 링크를 변경하는 방법

rsync / rsnapshot에서 심볼릭 링크를 제외하는 방법

Go에서 심볼릭 링크를 덮어 쓰는 방법?

Node.js에서 심볼릭 링크를 읽는 방법

Linux 웹 서버용 심볼릭 링크를 만드는 방법

루트에 대한 심볼릭 링크를 만드는 방법

Linux에서 심볼릭 링크 파일의 소스를 찾는 방법

쉘 스크립트에서 심볼릭 링크를 해결하는 방법

내 자식 저장소에서 심볼릭 링크를 처리하는 방법

/ var / tmp에서 / tmp로 심볼릭 링크를 되 돌리는 방법

PC에서 작동하는 상대 심볼릭 링크를 만드는 방법

git에서 심볼릭 링크를 업데이트하는 방법

Ubuntu의 / usr / bin / python에서 심볼릭 링크를 제거하는 방법

AppArmor에 최상위 심볼릭 링크를 가르치는 방법

심볼릭 링크를 만드는 방법

전체 심볼릭 링크 경로를 보는 방법

심볼릭 링크를 복사하는 방법?

소프트 심볼릭 링크를 '적용'하는 방법

/ bin / sh는 / bin / bash를 가리 키지 않는 심볼릭 링크입니다.

직접 심볼릭 링크 (다른 심볼릭 링크를 가리 키지 않는 링크) 나열

심볼릭 링크 재귀에서 중간체를 찾는 방법은 무엇입니까?

심볼릭 링크가 가리키는 대상 파일 경로를 찾는 방법은 무엇입니까?

gulp.src ()의 심볼릭 링크에 오류를주는 Gulp

Letsencrypt + Docker-심볼릭 링크를 처리하는 가장 좋은 방법?

어떻게 파일에 대한 모든 심볼릭 링크를 찾는 방법은?

ZSH는 심볼릭 링크가 아닌 파일을 심볼릭 링크 디렉토리 안에 glob하는 방법

모든 디렉토리에서 사용할 수있는 심볼릭 링크를 정의하는 방법

Saltstack 최신 버전 또는 파일에서 심볼릭 링크하는 방법

Windows에서 git 저장소에 심볼릭 링크를 추가하는 방법은 무엇입니까?

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관