개요
mktemp는 예측 불가능하고 고유한 이름을 가진 임시 파일이나 디렉토리를 생성하여 보안 및 충돌 문제를 방지합니다. 주로 셸 스크립트에서 안전한 임시 공간이 필요할 때 사용되며, 생성된 파일/디렉토리의 경로는 표준 출력으로 반환됩니다.
주요 특징
- 고유하고 예측 불가능한 이름 생성
- 보안 취약점 방지 (경쟁 조건 공격 방지)
- 임시 파일 또는 임시 디렉토리 생성 선택 가능
- 셸 스크립트 자동화에 적합
주요 옵션
mktemp 명령어는 임시 파일 또는 디렉토리 생성 방식을 제어하는 몇 가지 주요 옵션을 제공합니다.
생성 유형
이름 템플릿
생성된 명령어:
명령어를 조합해 보세요.
설명:
`mktemp` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
mktemp 명령어를 활용하여 임시 파일 및 디렉토리를 생성하고 스크립트에서 활용하는 다양한 방법을 보여줍니다.
기본 임시 파일 생성
mktemp
기본 임시 디렉토리(일반적으로 /tmp)에 고유한 이름의 임시 파일을 생성합니다.
임시 디렉토리 생성
mktemp -d
-d 옵션을 사용하여 임시 디렉토리를 생성합니다.
특정 패턴으로 임시 파일 생성
mktemp /tmp/my_app.XXXXXX
지정된 경로와 패턴을 사용하여 임시 파일을 생성합니다. 'X'는 고유한 문자로 대체됩니다.
스크립트에서 임시 파일 활용 및 자동 삭제
TEMP_FILE=$(mktemp)
if [ -z "$TEMP_FILE" ]; then
echo "Failed to create temp file"
exit 1
fi
trap 'rm -f "$TEMP_FILE"' EXIT
echo "임시 파일 경로: $TEMP_FILE"
echo "Hello from mktemp!" > "$TEMP_FILE"
cat "$TEMP_FILE"
# 스크립트 종료 시 $TEMP_FILE은 자동으로 삭제됩니다.
생성된 임시 파일 경로를 변수에 저장하고, trap 명령어를 사용하여 스크립트 종료 시 자동으로 파일을 삭제합니다.
스크립트에서 임시 디렉토리 활용 및 자동 삭제
TEMP_DIR=$(mktemp -d)
if [ -z "$TEMP_DIR" ]; then
echo "Failed to create temp directory"
exit 1
fi
trap 'rm -rf "$TEMP_DIR"' EXIT
echo "임시 디렉토리 경로: $TEMP_DIR"
echo "This is a test file." > "$TEMP_DIR/test.txt"
ls -l "$TEMP_DIR"
cat "$TEMP_DIR/test.txt"
# 스크립트 종료 시 $TEMP_DIR은 자동으로 삭제됩니다.
생성된 임시 디렉토리 경로를 변수에 저장하고, trap 명령어를 사용하여 스크립트 종료 시 자동으로 디렉토리를 삭제합니다.
팁 & 주의사항
mktemp를 사용할 때 유용한 팁과 주의해야 할 점들입니다.
사용 후 정리 필수
mktemp는 임시 파일을 생성하지만, 자동으로 삭제하지는 않습니다. 스크립트 종료 시 `rm` 명령어를 사용하여 생성된 파일이나 디렉토리를 명시적으로 삭제해야 합니다. `trap` 명령어를 활용하면 스크립트가 어떤 방식으로 종료되든 자동으로 정리할 수 있습니다.
- 파일: `rm "$TEMP_FILE"`
- 디렉토리: `rm -rf "$TEMP_DIR"`
- 자동 정리: `trap 'rm -rf "$TEMP_PATH"' EXIT`
보안 고려 사항
mktemp는 임시 파일 생성 시 발생할 수 있는 경쟁 조건(race condition) 공격을 방지하도록 설계되어 안전합니다. 하지만 생성된 파일에 민감한 정보를 저장할 경우, 파일 권한을 적절히 설정하여(예: `chmod 600 $TEMP_FILE`) 다른 사용자가 접근하지 못하도록 해야 합니다.
템플릿 사용 시
템플릿 문자열에는 최소 3개 이상의 'X' 문자가 포함되어야 합니다. 'X'의 개수가 많을수록 생성되는 이름의 고유성이 높아집니다.
- 권장: XXXXXX (6개 이상)
- 최소: XXX (3개)