개요
ln
명령어는 기존 파일에 대한 하드 링크나 심볼릭 링크를 생성하기 위해 사용되는 표준 유닉스 명령 유틸리티이다. 하드 링크를 사용하면 여러 개의 파일 이름을 동일한 파일에 연결할 수 있으며, 하드 링크는 지정된 파일의 아이노드를 가리키게 되며 데이터는 디스크에 저장된다. 한편, 심볼릭 링크는 이름을 통해 다른 파일들을 가리키는 특수한 파일들이다.
ln
명령어는 기본적으로 하드 링크를 생성하며 명령 줄 변수 ln '-s'
로 호출할 때 심볼릭 링크를 생성한다.대부분의 운영 체제는 디렉터리에 대한 하드 링크 생성을 금지하는데, 이러한 기능은 파일 시스템의 구조를 파괴하여 다른 유틸리티의 동작에 간섭을 줄 수 있기 때문이다.
하드링크는 직접 파일의 이름을 하나 더 만드는 것이다. 그렇기 때문에 만약 하드링크를 지워도 다른 하드링크가 있으면 파일은 지워지지 않는다. 모든 파일은 적어도 하나의 하드링크를 가진다고도 생각할 수 있다. 그에 반해서 소프트링크는 어디까지나 alias이다. 원본 파일을 지우면 소프트링크는 존재하지 않는 파일을 가르키게 된다.
사양
단일 유닉스 규격을 준수하는 시스템 상의 ln
유틸리티는 SUS의 일부를 형성하는 셸과 유틸리티(XCU) 문서에 명시되어 있다.
이 사양은 ln
유틸리티를 호출하는 2가지 방법을 기술한다. 더 구체적으로 말해,
- 하나의 파일을 호출할 때
ln
유틸리티는target_file
연산자에 의해 지정된 목적 경로에서source_file
연산자에 의해 지정된 소스 파일에 대한 새로운 하드 링크(디렉터리 엔트리)를 생성한다. 그러나-s
옵션이 지정되면 심볼릭 링크를 생성한다. ln [-fs] [-L|-P] source_file target_file
- 여러 개의 파일을 호출할 때
ln
유틸리티는 새로운 하드 링크를 만들지만(Directory entry)-s
옵션을 지정하면 심볼릭 링크를 생성한다. 이는target_dir
연산자에 의해 명명된 기존의 디렉터리의 목적 경로에서source_file
연산자에 의해 지정된 각 파일을 대상으로 한다. ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir
- 하나의 파일을 호출할 때