Linux 에서 심볼릭 링크 존재 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 Linux 에서 파일이 심볼릭 링크 (symbolic link) 인지 확인하는 방법을 배우게 됩니다. 이를 위해 세 가지 다른 방법을 살펴볼 것입니다.

먼저, -L 옵션과 함께 test 명령을 사용하여 파일 유형을 프로그래밍 방식으로 확인할 것입니다. 그런 다음, ls -l 명령의 출력을 검사하여 링크 정보를 확인할 것입니다. 마지막으로, readlink 명령을 사용하여 심볼릭 링크가 가리키는 대상 파일 또는 디렉토리를 확인하는 방법을 배우게 됩니다.

test -L 로 심볼릭 링크 테스트

이 단계에서는 -L 옵션과 함께 test 명령을 사용하여 파일이 심볼릭 링크인지 테스트하는 방법을 배우게 됩니다.

심볼릭 링크 (또는 심링크, symlink) 는 다른 파일 또는 디렉토리를 가리키는 특수한 유형의 파일입니다. Windows 의 바로 가기와 유사하다고 생각하면 됩니다. 심볼릭 링크에 액세스하면 실제로 해당 링크가 가리키는 파일 또는 디렉토리에 액세스하게 됩니다.

먼저, 간단한 파일을 만들어 보겠습니다. ~/project 디렉토리에 있는지 확인하십시오.

echo "This is the original file." > original_file.txt

이제 original_file.txt에 대한 심볼릭 링크를 만들어 보겠습니다. 심볼릭 링크의 이름을 my_symlink로 지정합니다.

ln -s original_file.txt my_symlink
  • ln: 링크를 생성하는 데 사용되는 명령입니다.
  • -s: 이 옵션은 ln에게 하드 링크 대신 심볼릭 링크를 생성하도록 지시합니다.
  • original_file.txt: 심볼릭 링크가 가리킬 대상 파일입니다.
  • my_symlink: 우리가 생성하는 심볼릭 링크의 이름입니다.

이제 test 명령을 사용하여 my_symlink가 심볼릭 링크인지 확인할 수 있습니다. test 명령은 파일 유형을 확인하고 값을 비교하는 데 사용됩니다. 직접적인 출력을 생성하지 않지만, 종료 상태 (exit status) 가 성공 (0) 또는 실패 (0 이 아닌 값) 를 나타냅니다.

testecho와 결합하여 결과를 확인할 수 있습니다.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink: my_symlink가 심볼릭 링크인지 확인합니다.
  • &&: 논리 AND 연산자입니다. && 앞의 명령이 성공하면 (종료 상태 0), && 뒤의 명령이 실행됩니다.
  • ||: 논리 OR 연산자입니다. || 앞의 명령이 실패하면 (종료 상태 0 이 아닌 값), || 뒤의 명령이 실행됩니다.

my_symlink는 실제로 심볼릭 링크이므로 출력은 다음과 같아야 합니다.

my_symlink is a symbolic link

이제 original_file.txt와 같은 일반 파일을 테스트해 보겠습니다.

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

출력은 다음과 같아야 합니다.

original_file.txt is NOT a symbolic link

이것은 test -L이 심볼릭 링크를 올바르게 식별함을 확인합니다.

ls -l 출력으로 링크 확인

이 단계에서는 ls -l 명령을 사용하여 심볼릭 링크와 해당 대상을 식별하는 방법을 배우게 됩니다.

ls 명령은 파일과 디렉토리를 나열하는 데 사용됩니다. -l 옵션은 각 파일에 대한 권한, 소유권, 크기 및 수정 시간과 같은 자세한 정보를 포함하는 "long listing" 형식을 제공합니다.

심볼릭 링크에 대해 ls -l을 사용하면 링크 자체와 함께 링크가 가리키는 대상도 표시됩니다.

이전 단계에서 original_file.txtmy_symlink를 생성한 ~/project 디렉토리에 있는지 확인하십시오.

이제 ls -l 명령을 실행합니다.

ls -l

다음과 유사한 출력을 볼 수 있습니다.

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

my_symlink에 대한 출력을 자세히 살펴보겠습니다.

  • 첫 번째 문자 l은 이것이 심볼릭 링크임을 나타냅니다. 일반 파일의 경우 -가 됩니다.
  • 권한 (rwxrwxrwx) 은 종종 심볼릭 링크에 대한 전체 권한으로 표시되지만 실제 권한은 대상 파일에 의해 결정됩니다.
  • 링크 수 (link count) 는 일반적으로 심볼릭 링크의 경우 1입니다.
  • 소유자 (owner) 와 그룹 (group) 은 labex입니다.
  • 크기 (15) 는 대상 경로 (original_file.txt) 의 문자 수입니다.
  • 타임스탬프는 심볼릭 링크 자체의 생성 또는 수정 시간입니다.
  • my_symlink: 심볼릭 링크의 이름입니다.
  • -> original_file.txt: 이 부분은 my_symlinkoriginal_file.txt를 가리킨다는 것을 명확하게 보여줍니다.

이것을 original_file.txt에 대한 출력과 비교해 보십시오.

  • 첫 번째 문자 -는 이것이 일반 파일임을 나타냅니다.
  • 권한 (rw-rw-r--) 은 파일에 대해 읽기, 쓰기 및 실행할 수 있는 사용자를 보여줍니다.
  • 링크 수 (1) 는 이 파일의 데이터를 가리키는 하드 링크의 수를 나타냅니다.
  • 크기 (25) 는 바이트 단위의 실제 파일 내용 크기입니다.

ls -l을 사용하는 것은 심볼릭 링크를 빠르게 식별하고 링크가 가리키는 대상을 확인하는 매우 일반적인 방법입니다.

이 단계에서는 readlink 명령을 사용하여 심볼릭 링크의 대상을 찾는 방법을 배우게 됩니다.

ls -l은 시각적인 개요에 유용하지만, readlink 명령은 심볼릭 링크를 확인하고 대상 경로를 출력하도록 특별히 설계되었습니다. 이는 스크립트에서 또는 다른 파일 정보 없이 대상 경로만 필요한 경우에 특히 유용합니다.

~/project 디렉토리에 있는지 확인하십시오.

이전 단계에서 생성한 심볼릭 링크 my_symlink에 대해 readlink 명령을 사용합니다.

readlink my_symlink

출력은 심볼릭 링크가 가리키는 경로가 됩니다.

original_file.txt

이는 my_symlink가 실제로 original_file.txt를 가리키고 있음을 확인합니다.

readlink 명령에는 유용한 옵션인 -f가 있는데, 이는 모든 심볼릭 링크를 재귀적으로 따라가 최종 대상의 절대 경로로 확인합니다. 이는 심볼릭 링크 체인이 있는 경우에 유용합니다.

my_symlink를 가리키는 다른 심볼릭 링크를 만들어 보겠습니다.

ln -s my_symlink another_link

이제 -f 옵션 없이 another_link에 대해 readlink를 사용하면 즉시 대상을 표시합니다.

readlink another_link

출력:

my_symlink

그러나 another_link에 대해 readlink -f를 사용하면 체인 (another_link -> my_symlink -> original_file.txt) 을 따라가 최종 대상의 절대 경로를 제공합니다.

readlink -f another_link

출력:

/home/labex/project/original_file.txt

이는 원본 파일의 전체 경로를 보여줍니다. readlink -f 명령은 다른 링크 내에 중첩된 경우에도 링크의 최종 대상을 찾는 데 매우 강력합니다.

이제 심볼릭 링크로 작업하는 세 가지 방법을 배웠습니다. test -L을 사용하여 파일이 링크인지 확인하고, ls -l을 사용하여 링크 세부 정보와 대상을 확인하고, readlink를 사용하여 대상 경로를 확인합니다.

요약

이 랩에서는 Linux 에서 파일이 심볼릭 링크인지 확인하는 방법을 배웠습니다. 먼저 일반 파일과 이를 가리키는 심볼릭 링크를 생성했습니다. 그런 다음 -L 옵션과 함께 test 명령을 사용하여 주어진 파일이 심볼릭 링크인지 프로그래밍 방식으로 확인하고, 해당 종료 상태가 논리 연산자 (&&||) 와 함께 사용하여 결과를 표시하는 방법을 관찰했습니다.

또한 ls -l 명령을 사용하여 심볼릭 링크를 시각적으로 확인하는 방법을 배웠습니다. 이 명령은 권한 필드의 시작 부분에 'l'을 표시하고 링크 대상을 보여줍니다. 마지막으로, 스크립팅 및 자동화에 유용성을 이해하면서 readlink 명령을 사용하여 심볼릭 링크의 대상 경로를 확인했습니다.