매일 여러 프로젝트를 오가며 작업하다 보면 각 프로젝트에서 뭘 했는지 기억하기 어려워요. 터미널을 주로 사용하는 개발자라면 더욱 그렇죠. 이럴 때 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에 백업 완료!"
실제로 이렇게 만들어서 사용하니까 프로젝트 관리가 훨씬 체계적으로 되더라고요. 특히 여러 프로젝트를 동시에 진행할 때 각각 뭘 했는지 까먹지 않아서 좋아요. 나중에 회고할 때도 유용하고, 성과 정리할 때도 그대로 활용할 수 있어요.
스크립트를 조금씩 수정해서 자신만의 작업 스타일에 맞게 커스터마이징해보세요. 예를 들어 작업 시간 추적 기능을 넣거나, 특정 키워드로 작업 내용을 분류하는 기능을 추가할 수도 있어요.