macOS에서 Shell Script로 폴더별 작업 일지 자동 생성하는 방법

매일 여러 프로젝트를 오가며 작업하다 보면 각 프로젝트에서 뭘 했는지 기억하기 어려워요. 터미널을 주로 사용하는 개발자라면 더욱 그렇죠. 이럴 때 Shell Script로 폴더마다 작업 일지를 자동으로 만들어주면 생산성이 확 올라가요.


육각형 모양의 쉘 스크립트 로고, 달러 기호와 초록색 커서가 표시된 터미널 아이콘


기본 스크립트 뼈대 만들기


먼저 작업 폴더들이 모여있는 디렉토리를 정해요. 저는 홈 디렉토리 아래 work 폴더를 사용해요.


#!/bin/bash
# worklog.sh - 작업 일지 자동 생성 스크립트

BASE_DIR="$HOME/work"  # 작업 폴더들이 있는 상위 디렉토리
TODAY=$(date +%F)       # 오늘 날짜 (2025-08-07 형식)

# BASE_DIR이 없으면 생성
if [ ! -d "$BASE_DIR" ]; then
    mkdir -p "$BASE_DIR"
    echo "작업 디렉토리를 생성했어요: $BASE_DIR"
fi


여기서 date +%F 명령어가 핵심이에요. macOS의 date 명령어로 YYYY-MM-DD 형식의 날짜를 만들어요. 이 날짜가 파일명에 들어가면 나중에 찾기도 쉬워요.


폴더별로 일지 파일 자동 생성하기


이제 각 프로젝트 폴더를 돌면서 오늘자 작업 일지를 만들어봐요.


# work 폴더 안의 모든 하위 폴더 탐색
for folder in "$BASE_DIR"/*; do
    # 폴더가 아니면 건너뛰기
    [ ! -d "$folder" ] && continue
    
    FOLDER_NAME=$(basename "$folder")  # 폴더 이름만 추출
    LOG_FILE="$folder/${TODAY}_worklog.md"  # 마크다운 형식으로
    
    # 일지 파일이 없으면 새로 생성
    if [ ! -f "$LOG_FILE" ]; then
        echo "# 작업 일지 - $TODAY" > "$LOG_FILE"
        echo "## 프로젝트: $FOLDER_NAME" >> "$LOG_FILE"
        echo "---" >> "$LOG_FILE"
        echo "" >> "$LOG_FILE"
        echo "파일 생성됨: $LOG_FILE"
    fi
done


마크다운 형식을 사용하면 나중에 GitHub에 올리거나 문서화하기 좋아요. 물론 .txt로 바꿔도 상관없어요.


작업 내용 기록하는 인터랙티브 모드


단순히 파일만 만들면 재미없죠. 작업 내용을 바로 입력할 수 있게 해봐요.


# 각 폴더별로 작업 내용 입력받기
for folder in "$BASE_DIR"/*; do
    [ ! -d "$folder" ] && continue
    
    FOLDER_NAME=$(basename "$folder")
    LOG_FILE="$folder/${TODAY}_worklog.md"
    
    # 사용자에게 작업 내용 물어보기
    echo ""
    echo "[$FOLDER_NAME] 오늘 작업한 내용이 있나요? (y/n)"
    read -r response
    
    if [[ "$response" == "y" ]]; then
        echo "작업 내용을 입력하세요 (완료: Ctrl+D):"
        
        # 현재 시각 기록
        TIME=$(date '+%H:%M')
        echo "" >> "$LOG_FILE"
        echo "### [$TIME] 작업 내용" >> "$LOG_FILE"
        
        # 여러 줄 입력 받기
        while IFS= read -r line; do
            echo "- $line" >> "$LOG_FILE"
        done
        
        echo "✓ 저장 완료!"
    fi
done


이렇게 하면 각 프로젝트마다 작업 내용을 물어보고, 입력한 내용을 시간과 함께 기록해요. 리스트 형식으로 저장되니까 나중에 보기도 편해요.


명령줄 인자로 빠르게 기록하기


매번 대화형으로 입력하기 귀찮을 때를 위한 방법이에요. 터미널에서 바로 기록할 수 있어요.


#!/bin/bash
# quicklog.sh - 빠른 작업 일지 기록

# 사용법 체크
if [ $# -lt 2 ]; then
    echo "사용법: ./quicklog.sh [프로젝트명] [작업내용]"
    echo "예시: ./quicklog.sh backend 'API 엔드포인트 수정'"
    exit 1
fi

PROJECT=$1
MESSAGE=$2
BASE_DIR="$HOME/work"
TODAY=$(date +%F)
TIME=$(date '+%H:%M')

# 프로젝트 폴더와 로그 파일 경로
PROJECT_DIR="$BASE_DIR/$PROJECT"
LOG_FILE="$PROJECT_DIR/${TODAY}_worklog.md"

# 폴더가 없으면 생성
mkdir -p "$PROJECT_DIR"

# 파일이 없으면 헤더 추가
if [ ! -f "$LOG_FILE" ]; then
    echo "# 작업 일지 - $TODAY" > "$LOG_FILE"
    echo "## 프로젝트: $PROJECT" >> "$LOG_FILE"
    echo "---" >> "$LOG_FILE"
fi

# 작업 내용 추가
echo "" >> "$LOG_FILE"
echo "### [$TIME]" >> "$LOG_FILE"
echo "- $MESSAGE" >> "$LOG_FILE"

echo "✓ [$PROJECT] 작업 내용이 기록됐어요!"


터미널에서 ./quicklog.sh frontend "버튼 컴포넌트 스타일 수정" 이런 식으로 바로 기록할 수 있어요. Git 커밋하듯이 작업 일지를 남기는 거죠.


일주일치 요약 보고서 만들기


작업 일지가 쌓이면 주간 보고서를 자동으로 만들 수 있어요.


#!/bin/bash
# weekly_report.sh - 주간 작업 요약

BASE_DIR="$HOME/work"
WEEK_AGO=$(date -v-7d +%F)  # macOS에서 7일 전 날짜
TODAY=$(date +%F)
REPORT_FILE="$BASE_DIR/weekly_report_${TODAY}.md"

echo "# 주간 작업 보고서" > "$REPORT_FILE"
echo "기간: $WEEK_AGO ~ $TODAY" >> "$REPORT_FILE"
echo "---" >> "$REPORT_FILE"

# 각 프로젝트별로 일주일치 로그 수집
for project_dir in "$BASE_DIR"/*; do
    [ ! -d "$project_dir" ] && continue
    
    PROJECT=$(basename "$project_dir")
    echo "" >> "$REPORT_FILE"
    echo "## $PROJECT" >> "$REPORT_FILE"
    
    # 최근 7일간의 로그 파일 찾기
    found_logs=false
    for log_file in "$project_dir"/*_worklog.md; do
        [ ! -f "$log_file" ] && continue
        
        # 파일명에서 날짜 추출
        log_date=$(basename "$log_file" | cut -d'_' -f1)
        
        # 날짜 비교 (최근 7일 이내인지)
        if [[ "$log_date" > "$WEEK_AGO" ]]; then
            found_logs=true
            echo "### $log_date" >> "$REPORT_FILE"
            # 작업 내용만 추출 (헤더 제외)
            grep "^- " "$log_file" >> "$REPORT_FILE" 2>/dev/null
        fi
    done
    
    if [ "$found_logs" = false ]; then
        echo "- 이번 주 작업 기록 없음" >> "$REPORT_FILE"
    fi
done

echo ""
echo "주간 보고서가 생성됐어요: $REPORT_FILE"


macOS의 date 명령어는 리눅스와 조금 달라요. -v-7d 옵션으로 7일 전 날짜를 구할 수 있어요.


자동 실행 설정하기 (launchd 활용)


매일 아침 자동으로 작업 일지 파일을 생성하려면 macOS의 launchd를 사용해요. cron보다 macOS에 최적화되어 있어요.


<!-- ~/Library/LaunchAgents/com.worklog.daily.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.worklog.daily</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>/Users/YOUR_USERNAME/scripts/worklog.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>9</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>


plist 파일을 만든 후 launchctl load ~/Library/LaunchAgents/com.worklog.daily.plist 명령으로 등록하면 매일 오전 9시에 자동 실행돼요.


깃과 연동해서 백업하기


작업 일지도 소중한 기록이니까 GitHub에 자동 백업하면 좋아요.


#!/bin/bash
# backup_logs.sh - 작업 일지 Git 백업

BASE_DIR="$HOME/work"
cd "$BASE_DIR" || exit

# Git 저장소 초기화 (처음 한 번만)
if [ ! -d .git ]; then
    git init
    git remote add origin YOUR_GITHUB_REPO_URL
fi

# 변경사항 커밋 및 푸시
git add -A
git commit -m "작업 일지 백업: $(date '+%Y-%m-%d %H:%M')"
git push origin main

echo "GitHub에 백업 완료!"


실제로 이렇게 만들어서 사용하니까 프로젝트 관리가 훨씬 체계적으로 되더라고요. 특히 여러 프로젝트를 동시에 진행할 때 각각 뭘 했는지 까먹지 않아서 좋아요. 나중에 회고할 때도 유용하고, 성과 정리할 때도 그대로 활용할 수 있어요.


스크립트를 조금씩 수정해서 자신만의 작업 스타일에 맞게 커스터마이징해보세요. 예를 들어 작업 시간 추적 기능을 넣거나, 특정 키워드로 작업 내용을 분류하는 기능을 추가할 수도 있어요.


macOS 단축어와 ChatGPT API로 나만의 AI 비서 만드는 실전 가이드