심볼릭 링크(symlink)는 리눅스에서 다른 파일이나 디렉터리(폴더)를 가리키는 일종의 파일입니다.
명령줄에서 ln 명령어를 사용하면 심볼릭 링크를 손쉽게 만들 수 있습니다.
심볼릭 링크는 파일이나 디렉터리에 대한 바로가기처럼 작동하기 때문에 매우 유용합니다.
이 글에서는 ln 명령어를 활용해 파일이나 디렉터리에 대한 심볼릭 링크를 만드는 방법을 단계별로 알아보겠습니다.
리눅스에서 소프트 링크와 하드 링크의 차이점은 무엇인가요?
소프트 링크(심볼릭 링크)는 시스템에 있는 원본 파일을 가리킵니다. 반면 하드 링크는 파일의 복사본을 생성합니다.
소프트 링크는 서로 다른 파일 시스템에 있는 파일이나 디렉터리도 가리킬 수 있지만, 하드 링크는 동일한 파일 시스템 내에서만 생성할 수 있습니다.
파일에 심볼릭 링크 만드는 방법
맥에서는 터미널(Terminal) 앱을, 윈도우에서는 명령 프롬프트(Command Prompt)를 사용해 명령줄에 접근할 수 있습니다.
터미널에서 파일에 대한 심볼릭 링크를 만드는 기본 문법은 다음과 같습니다.
ln -s existing_source_file optional_symbolic_link
ln 명령어로 파일의 링크를 생성하며, -s 옵션은 이 링크가 심볼릭 링크임을 지정합니다. 만약 -s 옵션을 생략하면 하드 링크가 대신 생성됩니다.
existing_source_file은 심볼릭 링크를 만들고자 하는 컴퓨터상의 실제 파일 경로입니다.
optional_symbolic_link는 생성할 심볼릭 링크의 이름입니다. 이 값을 생략하면 현재 작업 중인 디렉터리에 새 링크가 자동으로 생성됩니다.
예시를 통해 더 자세히 살펴보겠습니다.
바탕화면(Desktop)에 example_fcc_file.txt라는 파일이 있다고 가정해 보겠습니다.
![Linux ln 명령어 완벽 가이드 – 리눅스에서 심볼릭 링크 만드는 방법 [Bash 예제]](https://kr.wsxdn.com/UploadFiles_1288/202207/2022070811300753.png)
먼저 터미널을 연 뒤 바탕화면 디렉터리로 이동해야 합니다. cd Desktop 명령어를 실행하면 바탕화면으로 이동할 수 있습니다.
명령어 실행 후 프롬프트를 통해 현재 위치가 바탕화면임을 확인할 수 있습니다.
jessicawilkins@Dedrias-MacBook-Pro-2 ~ % cd Desktop
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % 이제 ln 명령어로 fcc_link.txt라는 새로운 심볼릭 링크를 만들어 보겠습니다.
ln -s example_fcc_file.txt fcc_link.txt이 명령어를 실행하면 아무런 출력이 없다는 점을 눈치챌 수 있습니다. ln 명령어는 성공적으로 실행되면 별도의 메시지 없이 종료 코드 0을 반환하기 때문입니다.
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % ln -s example_fcc_file.txt fcc_link.txt
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % 심볼릭 링크가 제대로 생성되었는지 확인하려면 ls 명령어를 사용하면 됩니다. ls 명령어는 파일 정보를 나열하며, -l 플래그를 붙이면 심볼릭 링크 정보까지 상세하게 보여줍니다.
ls -l fcc_link.txt이 명령어를 실행하면 터미널에서 다음과 같은 결과를 확인할 수 있습니다.
lrwxr-xr-x 1 jessicawilkins staff 20 Feb 19 19:56 fcc_link.txt -> example_fcc_file.txt
출력 결과에서 fcc_link.txt -> example_fcc_file.txt 부분은 심볼릭 링크가 example_fcc_file.txt라는 원본 파일을 가리키고 있음을 의미합니다.
또한 디렉터리 안에 새로 생성된 심볼릭 링크가 표시되는 것도 확인할 수 있습니다.
![Linux ln 명령어 완벽 가이드 – 리눅스에서 심볼릭 링크 만드는 방법 [Bash 예제]](https://kr.wsxdn.com/UploadFiles_1288/202207/2022070811300861.png)
디렉터리에 심볼릭 링크 만드는 방법
이번에는 홈 디렉터리의 Music 폴더를 가리키는 my_music이라는 심볼릭 링크를 만들어 보겠습니다.
먼저 홈 디렉터리에 있는지 확인하세요. 명령줄에서 인자 없이 cd만 입력하면 언제든 홈 디렉터리로 돌아갈 수 있습니다.
jessicawilkins@Dedrias-MacBook-Pro-2 Desktop % cd
jessicawilkins@Dedrias-MacBook-Pro-2 ~ % 그다음 ln 명령어로 Music 디렉터리에 대한 심볼릭 링크를 생성합니다.
ln -s /Users/jessicawilkins/Music ~/my_music
성공적으로 생성되었다면 홈 디렉터리에서 my_music 링크를 확인할 수 있습니다.
![Linux ln 명령어 완벽 가이드 – 리눅스에서 심볼릭 링크 만드는 방법 [Bash 예제]](https://kr.wsxdn.com/UploadFiles_1288/202207/2022070811300833.png)
심볼릭 링크 삭제하는 방법
심볼릭 링크를 삭제하려면 unlink 또는 rm 명령어 중 하나를 사용하면 됩니다.
앞서 만든 fcc_link.txt 심볼릭 링크를 삭제하려면 다음 명령어 중 하나를 실행하면 됩니다.
rm fcc_link.txtunlink fcc_link.txt실행 후 디렉터리에서 해당 심볼릭 링크가 사라진 것을 확인할 수 있습니다.
![Linux ln 명령어 완벽 가이드 – 리눅스에서 심볼릭 링크 만드는 방법 [Bash 예제]](https://kr.wsxdn.com/UploadFiles_1288/202207/2022070811300887.png)
심볼릭 링크 덮어쓰는 방법
이미 존재하는 이름으로 새 심볼릭 링크를 만들려고 하면 오류가 발생합니다. 해당 이름이 이미 사용 중이며 다른 파일을 가리키고 있기 때문입니다.
ln: fcc_link.txt: File exists
이 경우 강제(force) 옵션인 -f를 사용하면 기존 링크를 덮어써서 새 링크를 생성할 수 있습니다.
ln -sf example_fcc_file.txt fcc_link.txtln 명령어 더 자세히 알아보기
ln 명령어에 대해 더 깊이 알고 싶다면 man 페이지(리눅스 명령어 공식 매뉴얼)를 참고하는 것이 좋습니다.
터미널에서 man ln을 실행하면 ln 명령어의 전체 설명과 옵션 목록을 확인할 수 있습니다.
LN(1) BSD General Commands Manual LN(1)
NAME
link, ln -- make links
SYNOPSIS
ln [-Ffhinsv] source_file [target_file]
ln [-Ffhinsv] source_file ... target_dir
link source_file target_file
DESCRIPTION
The ln utility creates a new directory entry (linked file) which has the same modes as the original file. It is
useful for maintaining multiple copies of a file in many places at once without using up storage for the
``copies''; instead, a link ``points'' to the original copy. There are two types of links; hard links and sym-
bolic links. How a link ``points'' to a file is one of the differences between a hard and symbolic link.
The options are as follows:
-F If the target file already exists and is a directory, then remove it so that the link may occur. The -F
option should be used with either -f or -i options. If none is specified, -f is implied. The -F option
is a no-op unless -s option is specified.
-h If the target_file or target_dir is a symbolic link, do not follow it. This is most useful with the -f
option, to replace a symlink which may point to a directory.
-f If the target file already exists, then unlink it so that the link may occur. (The -f option overrides마무리
심볼릭 링크는 리눅스에서 다른 파일이나 디렉터리를 가리키는 일종의 파일입니다. 명령줄에서 ln 명령어를 사용하면 간단하게 생성할 수 있습니다.
심볼릭 링크는 파일이나 디렉터리의 바로가기 역할을 하므로 작업 효율을 크게 높여 줍니다.
파일에 대한 심볼릭 링크를 만드는 기본 문법은 다음과 같습니다.
ln -s existing_source_file optional_symbolic_link디렉터리에 대한 심볼릭 링크를 만드는 기본 문법은 다음과 같습니다.
ln -s path_to_existing_directory name_of_symbolic_link
심볼릭 링크를 삭제하려면 unlink 또는 rm 명령어를 사용하세요.
rm name_of_symbolic_linkunlink name_of_symbolic_link기존 심볼릭 링크를 강제로 덮어써야 한다면 다음 명령어를 사용하면 됩니다.
ln -sf path_to_existing_directory name_of_symbolic_link심볼릭 링크에 관한 이 글이 여러분에게 도움이 되었기를 바랍니다. 앞으로의 프로그래밍 여정을 응원합니다!