Ln (유닉스)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
`ln`은 유닉스 계열 운영 체제에서 파일에 대한 링크를 생성하는 데 사용되는 명령어이다. 이 명령어는 하드 링크와 심볼릭 링크, 두 가지 유형의 링크를 생성할 수 있다. 하드 링크는 파일 이름과 파일 내용을 연결하는 객체이며, 심볼릭 링크는 대상 파일의 경로를 포함하는 특수 파일이다. ln 명령어는 단일 파일 또는 여러 파일에 대한 링크를 생성할 수 있으며, 다양한 옵션을 통해 링크 생성 방식을 제어할 수 있다. 이 명령어는 POSIX 표준을 준수하며, 다양한 운영 체제에서 사용할 수 있다.
더 읽어볼만한 페이지
- 표준 유닉스 프로그램 - AWK
AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다. - 표준 유닉스 프로그램 - Rm (유닉스)
유닉스 명령어 `rm`은 파일을 삭제하는 데 사용되며, 옵션을 통해 삭제 동작을 제어하고 디렉터리를 재귀적으로 삭제할 수 있지만, 잘못 사용하면 시스템에 심각한 손상을 초래할 수 있어 주의가 필요하며 안전 장치나 휴지통 기능 등의 대안이 존재한다. - 유닉스 SUS2008 유틸리티 - AWK
AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다. - 유닉스 SUS2008 유틸리티 - 로케일
로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
Ln (유닉스) - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
일반 | |
종류 | 명령 |
개발자 | AT&T 벨 연구소 |
최초 릴리스 | 1971년 11월 3일 |
운영 체제 | 유닉스 유닉스 계열 IBM i |
플랫폼 | 크로스 플랫폼 |
라이선스 | GPLv3+ (coreutils) |
웹사이트 | GNU Coreutils: ln invocation |
설명 | |
기능 | 파일 관리 유틸리티 |
사용법 |
2. 역사
ln 명령어는 X/Open 이식성 지침 Issue 2에 처음 등장했다.[13] GNU coreutils에 포함된 ln 버전은 마이크 파커(Mike Parker)와 데이비드 매켄지(David MacKenzie)가 작성했다.[5]
`ln` 명령어는 단일 유닉스 규격을 준수하는 시스템에서 파일을 연결하는 데 사용되는 유틸리티이다.[18][19] 이 명령어는 하드 링크와 심볼릭 링크 두 가지 주요한 링크를 생성할 수 있다. 기본적으로 하드 링크를 생성하지만, `-s` 옵션을 추가하면 심볼릭 링크를 생성한다.[20]
3. 링크의 종류
링크는 여러 개의 파일 이름이 동일한 파일을 참조하거나, 포인터처럼 파일 이름을 가리키도록 한다.
3. 1. 하드 링크
하드 링크는 단순히 링크라고도 하며, 파일 이름을 아이노드와 연결하고 따라서 파일 내용 자체와 연결하는 객체이다.[1] 디스크 상의 특정 파일은 디렉터리 계층에 여러 개의 링크를 가질 수 있으며, 모든 링크는 동일한 아이노드와 연결되므로 동등하다.[11] 따라서 링크를 생성하는 것은 파일의 내용을 복사하는 것이 아니라, 단순히 다른 이름이 동일한 내용과 연결되도록 하는 것이다. 하드 링크가 생성될 때마다, 링크 카운터는 아이노드 구조의 일부로 증가한다. 파일은 참조 횟수가 0이 될 때까지 삭제되지 않는다.[1][8] 그러나 하드 링크는 동일한 파일 시스템에서만 생성될 수 있으며, 이것이 단점으로 작용할 수 있다.[9]
3. 2. 심볼릭 링크
심볼릭 링크는 경로명 해석 중에 발견되면, 심볼릭 링크가 포함하는 위치로 이동하도록 [http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13 경로명 해석]을 수정하는 특수 파일이다. 따라서 심볼릭 링크의 내용은 대상 경로 문자열이며, `readlink` 명령줄 유틸리티를 사용하여 검사할 수도 있다.[10] 심볼릭 링크는 기존 파일의 위치를 참조하지 않는 임의의 문자열을 포함할 수 있다. 이러한 심볼릭 링크는 심볼릭 링크가 포함하는 위치에 파일이 생성될 때까지 실패한다. 반대로, 기존 파일에 대한 심볼릭 링크는 기존 파일이 다른 위치로 이동하거나 이름이 변경되면 실패한다.[11]
4. 사용법
`ln` 명령어는 단일 유닉스 규격을 준수하는 시스템에서 사용되며, 셸과 유틸리티(XCU) 문서에 명시되어 있다.[1] 이 문서는 POSIX의 일부이기도 하다.[13]
`ln` 명령어는 하나의 파일 또는 여러 파일에 대한 링크를 생성한다. 사용법은 다음과 같다.
- 단일 파일: `source_file`에 대한 하드 링크(디렉터리 엔트리)를 `target_file`에 생성한다. `-s` 옵션을 사용하면 심볼릭 링크를 생성한다.
- 여러 파일: `target_dir` 디렉터리 안에 `source_file`들 각각에 대한 하드 링크를 생성한다. `-s` 옵션을 사용하면 심볼릭 링크를 생성한다.
`ln` 명령어의 옵션은 다음과 같다.
- `-f`: 링크 생성을 위해 기존 대상 경로명을 강제로 제거한다.
- `-L`: 심볼릭 링크인 `source_file`에 대해, 심볼릭 링크가 가리키는 파일에 대한 하드 링크를 생성한다.
- `-P`: 심볼릭 링크인 `source_file`에 대해, 심볼릭 링크 자체에 대한 (하드) 링크를 생성한다.
- `-s`: 하드 링크 대신 심볼릭 링크를 생성한다. `-s` 옵션이 지정되면 `-L`과 `-P` 옵션은 무시된다.
`-L`과 `-P` 옵션이 모두 지정되면, 마지막에 지정된 옵션이 적용된다. `-s` 옵션이 없고 `-L` 또는 `-P` 옵션도 지정되지 않은 경우, 어떤 옵션이 기본값으로 사용될지는 구현에 따라 다르다.
대상 파일이나 대상 디렉터리가 지정되지 않으면, 링크는 현재 작업 디렉토리에 생성된다.
4. 1. 단일 파일 링크
`ln` 유틸리티는 `target_file` 연산자로 지정된 목적 경로에 `source_file` 연산자로 지정된 소스 파일에 대한 새로운 하드 링크(디렉터리 엔트리)를 생성한다. `-s` 옵션이 지정되면 심볼릭 링크를 생성한다.[20]```bash
ln [-fs] [-L|-P] source_file target_file
4. 2. 다중 파일 링크
여러 파일에 대한 하드 링크 또는 심볼릭 링크를 생성할 때 `ln` 유틸리티는 다음 구문을 사용한다.[20]```bash
ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir
```
`ln` 유틸리티는 `target_dir` 연산자로 지정된 기존 디렉터리 내에 `source_file` 연산자로 지정된 각 파일에 대한 새로운 하드 링크(디렉터리 엔트리)를 생성한다. `-s` 옵션이 지정되면 심볼릭 링크가 생성된다.[18][19]
5. 옵션
`ln` 명령어는 단일 유닉스 규격을 준수하는 시스템에서 사용되며, 셸 및 유틸리티(XCU) 문서에 명시되어 있다.[1] 이 규격은 `ln` 유틸리티를 호출하는 두 가지 방법을 제시한다.
- 단일 파일 호출: `ln [-fs] [-L|-P] source_file target_file`
- `target_file`에 지정된 경로에 `source_file`에 대한 하드 링크를 생성한다.
- `-s` 옵션을 사용하면 심볼릭 링크를 생성한다.
- 여러 파일 호출: `ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir`
- `target_dir` 디렉터리 안에 각 `source_file`에 대한 하드 링크를 생성한다.
- `-s` 옵션을 사용하면 심볼릭 링크를 생성한다.
`-L`과 `-P` 옵션은 상호 배타적이며, 둘 다 지정된 경우 마지막에 지정된 옵션이 적용된다. `-s` 옵션이 지정되지 않고 `-L` 또는 `-P` 옵션이 지정되지 않은 경우, 구현에 따라 `-L` 또는 `-P` 옵션 중 어느 것이 기본값으로 사용될지 결정된다. 대상 파일이나 디렉터리가 지정되지 않으면, 링크는 현재 작업 디렉터리에 생성된다.
5. 1. -f
기존 대상 경로명을 제거하고 링크를 강제한다.[12] 덮어쓰기 확인 문의를 하지 않는다.5. 2. -s
`-s` 옵션을 지정하면 하드 링크 대신 심볼릭 링크를 생성한다.[18][19][20] `-s` 옵션이 지정되면 `-L` 및 `-P` 옵션은 자동으로 무시된다.5. 3. -L
`source_file` 피연산자가 심볼릭 링크인 파일을 지정할 때, 심볼릭 링크가 참조하는 파일에 대한 하드 링크를 생성한다.[12]5. 4. -P
`-P` 옵션은 심볼릭 링크인 파일을 지정하는 각 `source_file` 피연산자에 대해 심볼릭 링크 자체에 대한 하드 링크를 생성한다.[12][13]6. 사양
단일 유닉스 규격을 준수하는 시스템의 `ln` 유틸리티는 셸과 유틸리티(XCU) 문서에 명시되어 있다.[18][19] 이 사양은 `ln` 유틸리티를 호출하는 2가지 방법을 기술한다.[20]
- 하나의 파일을 호출할 때 `ln` 유틸리티는 `target_file` 연산자에 의해 지정된 목적 경로에서 `source_file` 연산자에 의해 지정된 소스 파일에 대한 새로운 하드 링크(디렉터리 엔트리)를 생성한다. 그러나 `-s` 옵션이 지정되면 심볼릭 링크를 생성한다.
```bash
ln [-fs] [-L|-P] source_file target_file
```
- 여러 개의 파일을 호출할 때 `ln` 유틸리티는 `source_file` 연산자에 의해 지정된 각 파일을 대상으로 새로운 하드 링크를 만든다. `-s` 옵션을 지정하면 심볼릭 링크를 생성하는데, 이는 `target_dir` 연산자에 의해 명명된 기존의 디렉터리의 목적 경로에서 각 파일을 대상으로 한다.
```bash
ln [-fs] [-L|-P] source_file_1 source_file_2 ... target_dir
```
명세는 또한 지원되어야 하는 명령줄 옵션을 지정한다.
- `-f`: 링크를 허용하기 위해 기존 대상 경로명을 제거하도록 강제한다.
- `-L`: 심볼릭 링크인 파일을 지정하는 각 `source_file` 피연산자에 대해 심볼릭 링크가 참조하는 파일에 대한 하드 링크를 생성한다.
- `-P`: 심볼릭 링크인 파일을 지정하는 각 `source_file` 피연산자에 대해 심볼릭 링크 자체에 대한 (하드) 링크를 생성한다.
- `-s`: 하드 링크 대신 심볼릭 링크를 생성한다. `-s` 옵션이 지정되면 `-L` 및 `-P` 옵션은 자동으로 무시된다.
- 상호 배타적인 옵션 `-L` 및 `-P` 중 둘 이상이 지정되면, 가장 마지막에 지정된 옵션이 유틸리티의 동작을 결정한다.
- `-s` 옵션이 지정되지 않고 `-L` 또는 `-P` 옵션이 지정되지 않으면, 구현은 `-L` 및 `-P` 옵션 중 어느 것이 기본값으로 사용될지 정의한다.
대상 파일이나 대상 디렉토리 중 어느 것도 지정되지 않으면, 링크는 현재 작업 디렉토리에 생성된다.
7. 이식성
`ln`은 X/Open 이식성 지침 Issue 2에 처음 등장했다.[13] GNU coreutils에 포함된 `ln` 버전은 마이크 파커(Mike Parker)와 데이비드 매켄지(David MacKenzie)가 작성했다.[5]
이 명령어는 GNU 유닉스 계열 유틸리티를 Win32로 포팅하기 위한 UnxUtils 컬렉션의 일부로 마이크로소프트 윈도우용으로도 제공된다.[6] `ln` 명령어는 IBM i 운영 체제로도 포팅되었다.[7]
참조
[1]
서적
The Unix programming environment.
https://archive.org/[...]
Prentice-Hall
1984
[2]
웹사이트
GNU Coreutils: ln invocation
https://www.gnu.org/[...]
Free Software Foundation, Inc.
2015-08-07
[3]
웹사이트
ln - The Open Group Base Specifications Issue 7
http://pubs.opengrou[...]
The IEEE and The Open Group
2015-08-07
[4]
웹사이트
Why are hard links not allowed to directories in UNIX/Linux?
http://unix.stackexc[...]
2015-08-07
[5]
문서
ln
ManKier
[6]
웹사이트
Native Win32 ports of some GNU utilities
http://unxutils.sour[...]
[7]
웹사이트
IBM System i Version 7.2 Programming Qshell
https://www.ibm.com/[...]
2020-09-05
[8]
웹사이트
Speaking UNIX: It is all about the inode
http://www.ibm.com/d[...]
IBM developerWorks
2015-08-07
[9]
서적
Understanding the Linux Kernel
Safari Tech Books Online
2005
[10]
웹사이트
readlink(1) - Linux man page
http://linux.die.net[...]
2015-08-07
[11]
서적
The GNU C Library Reference Manual
https://www.gnu.org/[...]
Free Software Foundation, Inc
2015-08-07
[12]
웹사이트
The Single UNIX Specification, Version 4 - Overview
http://www.unix.org/[...]
unix.org
2015-08-07
[13]
문서
ln
SUS
[14]
서적
The Unix programming environment.
https://archive.org/[...]
Prentice-Hall
1984
[15]
웹인용
GNU Coreutils: ln invocation
https://www.gnu.org/[...]
Free Software Foundation, Inc.
2015-08-07
[16]
웹인용
ln - The Open Group Base Specifications Issue 7
http://pubs.opengrou[...]
The IEEE and The Open Group
2015-08-07
[17]
웹인용
Why are hard links not allowed to directories in UNIX/Linux?
http://unix.stackexc[...]
2015-08-07
[18]
웹인용
The Single UNIX Specification, Version 4 - Overview
http://www.unix.org/[...]
unix.org
2015-08-07
[19]
웹인용
Shell & Utilities: Detailed Toc
http://pubs.opengrou[...]
The IEEE and The Open Group
2015-08-07
[20]
웹인용
ln
http://pubs.opengrou[...]
The IEEE and The Open Group
2015-08-07
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com