소개
이 랩에서는 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 이 아닌 값) 를 나타냅니다.
test를 echo와 결합하여 결과를 확인할 수 있습니다.
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.txt와 my_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_symlink가original_file.txt를 가리킨다는 것을 명확하게 보여줍니다.
이것을 original_file.txt에 대한 출력과 비교해 보십시오.
- 첫 번째 문자
-는 이것이 일반 파일임을 나타냅니다. - 권한 (
rw-rw-r--) 은 파일에 대해 읽기, 쓰기 및 실행할 수 있는 사용자를 보여줍니다. - 링크 수 (
1) 는 이 파일의 데이터를 가리키는 하드 링크의 수를 나타냅니다. - 크기 (
25) 는 바이트 단위의 실제 파일 내용 크기입니다.
ls -l을 사용하는 것은 심볼릭 링크를 빠르게 식별하고 링크가 가리키는 대상을 확인하는 매우 일반적인 방법입니다.
readlink 를 사용하여 링크 대상 확인
이 단계에서는 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 명령을 사용하여 심볼릭 링크의 대상 경로를 확인했습니다.



