File - link
In
make links
- 하드 링크 (hard link)
- 심볼릭 링크 (symbolic link, symlink, -s)
용도
- library 버전 관리
- build 시 정적 빌드시 용량을 많이 차지함. 대신 동적 빌드 o
개념 - 파일 저장 (i-node와 link)
file은 파일 경로와 데이터로 구성되어 있다.
file의 데이터에 접근할 때,
i-node를 통해서 하드웨어에 저장된 실제 데이터를 접근한다.
파일 경로로 부터 i-node를 연결하는 기능이 필요하고 이를 hardlink라 한다.
따라서 File을 복제 하였을 때,
데이터가 복사되어 새로운 하드웨어 메모리를 차지하는 것이 아니라,
같은 i-node를 가리키는 hardlink가 추가로 생성되어 추가 메모리를 소요하지 않는다.
symlink는 완전히 다른 파일로, 단지 특정 파일의 경로를 가리키는 기능을 한다. (윈도우의 파일 및 폴더 바로가기 생성)
i-node (i-num)
파일의 메타 정보를 가지고 관리하는 객체
- 시간 관련 정보, 사이즈, 소유권, 권한 … 등
- 파일은 고유의 i-node를 1개 가지고 있다.
- i-node는 disk partition(volume) 내에서만 유효한 식별자다.
- 다른 disk에서 i-node는 의미 없는 번호
hard link
- ln [original file][hardlink file]
- same i-node를 가리키므로 동일(실체 파일과 하드링크파일이)ㅇ션파티티에내서에만 능가
- regular file(일반 파일, 데이터 실체를 가진 파일)에만 생성이 가능함.
- unregular file (directory, device file) 등은 생성이 불가능함
symbolic link (symlink)
- ln -s [original file][symlink file]
- ln -sr hello.txt ../symhello.txt
- 기능: 위치(path)만 가리키므로 다른 파티션, 모든 종류의 file에 생성
- 권한: 777, 의미는 없다
- bronken error방지
- symlink 생성시 [original file]의 경로를 입력한 그대로 연결하기 때문에, symlink 폴더 위치로 이동해서 symlink 폴더 위치를 기준으로 [original file] 경로를 지정해주어야 한다.
readlink
readlink [-fe]
symlink의 canonical path 식별
- symlink → symlink → … → symlink → hardlink
- readlink -f : 마지막 링크를 제외하고
- readlink -e : 전체 링크
개념 - canonical
canonical : 실체화, 실체를 가지는 standard, official의 의미를 가짐
../../와 같은 상대 주소는 cwd에 따라 가르키는 위치가 달라짐
. (현재 디렉토리, cwd)가 정의되면 cwd를 기준으로 ../../를 official한 값으로 해석할 수 있다.
(A의) 옆집과 같이 A나 B가 정해져야만 official한 의미가 되는 경우, 상대적인 의미를 해석한 뒤 standard, official의 대상을 한정하는 행위를 canonicalization이라고 표현한다.
symlink는 실체를 가리키는게 아니기 때문에 따라가기 전에는 대상을 한정할 수 없다. 그러므로 순차적으로 따라가야 canonical path를 알 수 있게 된다.
which
which [commend]
- PATH에 존재하는 파일을 검색
- 명령어가 어디있는지 알야 할 때 사용