# ln 에 대해서 알아보자.
- ln은 링크의 약어로, 리눅스 파일 시스템에서 링크파일을 만드는 명령어이다.
- 리눅스에서는 심볼릭 링크와 하드링크 두가지의 링크 설정 방식이 존재한다.
1. 심볼릭 링크
- 단순히 원본 파일만 가리키도록 링크만 시켜둔 것으로 마이크로 소프트의 윈도우에서 바로가기를 설정한것과 같은 역할을 한다.
2. 하드링크
- 원본 파일과 다른 이름으로 존재하는 동일한 파일로, 원본 파일과 동일한 내용의 파일이라고 볼 수 있다. 원본파일과 링크파일 두개가 존재하며, 어느 하나를 삭제하도 다른 하나는 남아 있다.
또한, 하드링크의 원본파일 내용이 변경될경우 링크파일의 내용도 자동으로 변경된다.
[옵션]
--backup[=CONTROL] : 대상파일이 이미 존재할 경우에 백업파일을 만든 후에 링크파일 생성
-b : 링크파일 생성시에 대상파일이 이미 존재하면 백업파일을 만든 후에 링크파일을 생성
-d : 디렉토리에 대한 하드링크파일생성을 가능하게 함. 단 root 권한으로 수행하더라도 시스템의 권한제한으로 인하여 실패할 가능성이 높음. (-F 와 --directory 는 -d 와 동일함)
-f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성
-i : 대상파일이 존재할 경우에 대상파일을 지울것인가를 확인요청 (--interactive 와 동일)
-s : 심볼릭 링크파일을 생성
-S : 백업파일 생성시에 원하는 접미사(suffix)를 지정할 수 있음
-t, --target-directory=DIRECTORY : 링크파일을 생성할 디렉토리를 지정
- 예제 내용이다. (Kinesis Data Streams의 실행 sh 파일을 참조 하였다. 하단에 링크를 생성하는 명령어를 보면 된다.)
#!/bin/bash -
WORK_DIR=$(cd $(dirname $0); pwd)
TARGET_DIR=$(dirname ${WORK_DIR})
OS_NAME=$(cat /etc/os-release | awk -F "=" '$1 == "NAME" { print $2 }')
if [[ z"${OS_NAME}" == z"\"Amazon Linux AMI\"" ]];
then
sudo yum -y update
sudo yum -y install python36
sudo pip-3.6 install -U boto3
elif [[ z"${OS_NAME}" == z"\"Amazon Linux\"" ]];
then
sudo yum -y update
sudo yum -y install python3
sudo pip3 install -U boto3
elif [[ z"${OS_NAME}" == z"\"Ubuntu\"" ]];
then
sudo apt-get -y update
sudo apt-get -y install python3.6
sudo apt-get -y install python3-pip
else
echo "[Unknown OS] You should install python3.6+, pip3+ for yourself!"
exit 0
fi
ln -sf ${WORK_DIR}/src/main/python/UpsertToES/upsert_to_es.py ${TARGET_DIR}/upsert_to_es.py
ln -sf ${WORK_DIR}/src/main/python/MergeSmallFiles/athena_ctas.py ${TARGET_DIR}/athena_ctas.py
ln -sf ${WORK_DIR}/src/main/python/utils/gen_kinesis_data.py ${TARGET_DIR}/gen_kinesis_data.py
ln -sf ${WORK_DIR}/resources ${TARGET_DIR}/resources
- 끝 -
'쉘스크립트' 카테고리의 다른 글
sleep (지연) (0) | 2022.07.11 |
---|---|
alias 등록으로 간편하게 조회하기 (0) | 2022.03.18 |
vi 파일 내 문자열 검색 (0) | 2021.11.09 |
쉘스크립트 문법검사 사이트 (0) | 2021.10.24 |