iTerm2에서 반복되는 터미널 작업을 키보드 한 번으로 실행하고 싶은데 방법을 모르겠다면, 이 글이 도움이 될 거예요. iTerm2는 공식적인 매크로 기능은 없지만, 단축키 설정과 스크립트를 조합하면 강력한 자동화 도구로 변신해요.
기본 단축키 설정으로 명령어 자동 실행하기
iTerm2의 환경설정에서 키보드 단축키에 명령어를 할당하는 게 가장 기본적인 방법이에요. Preferences > Profiles > Keys 탭으로 이동한 후 Key Mappings에서 설정할 수 있어요.
# 예시: 프로젝트 디렉터리로 이동 후 개발 서버 실행
cd ~/projects/myapp && npm run dev
위 명령어를 매번 입력하기 번거롭다면, ⌘+Shift+D 같은 단축키에 할당해보세요. + 버튼을 클릭하고 Keyboard Shortcut을 설정한 뒤, Action에서 Send Text를 선택하고 명령어를 입력하면 돼요.
셸 함수로 복잡한 작업 묶어서 실행하기
자주 사용하는 여러 명령어를 하나로 묶고 싶다면 셸 함수를 만드는 게 효과적이에요. .zshrc 파일을 열어서 함수를 추가해보세요.
# ~/.zshrc 파일에 추가
function dev() {
# 프로젝트 디렉터리로 이동
cd ~/projects/$1
# git 상태 확인
echo "📊 Git Status:"
git status
# 의존성 설치 및 개발 서버 실행
echo "🚀 Starting development server..."
npm install && npm run dev
}
# 사용법: dev myproject
이렇게 만든 함수를 iTerm2 단축키와 연결하면 더욱 편리해요. Send Text 액션에 dev myproject 를 입력하면 단축키 하나로 전체 개발 환경을 시작할 수 있어요.
Python API로 고급 자동화 구현하기
iTerm2의 Python API를 사용하면 창 분할, 탭 생성, 여러 명령어 순차 실행 같은 복잡한 작업도 자동화할 수 있어요. Scripts 메뉴에서 Manage > New Python Script를 선택해 시작해요.
#!/usr/bin/env python3
# ~/Library/Application Support/iTerm2/Scripts/dev_setup.py
import iterm2
import asyncio
async def main(connection):
app = await iterm2.async_get_app(connection)
window = app.current_terminal_window
if window is not None:
# 새 탭 생성
tab = await window.async_create_tab()
session = tab.current_session
# 프로젝트 디렉터리로 이동
await session.async_send_text("cd ~/projects/myapp\n")
# 화면을 세로로 분할
session2 = await session.async_split_pane(vertical=True)
# 왼쪽: 개발 서버 실행
await session.async_send_text("npm run dev\n")
# 오른쪽: 로그 모니터링
await session2.async_send_text("tail -f logs/app.log\n")
# 스크립트 실행
iterm2.run_until_complete(main)
이 스크립트를 저장하고 Scripts 메뉴에서 실행하거나, 단축키로 트리거할 수 있어요. 한 번의 클릭으로 개발 환경 전체를 자동 구성하는 거죠.
자주 쓰는 명령어 템플릿 만들기
Docker 명령어나 kubectl 같은 복잡한 명령어를 템플릿화하면 실수를 줄이고 시간을 절약할 수 있어요.
# alias로 간단한 템플릿 만들기 (~/.zshrc에 추가)
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dexec='docker exec -it $(docker ps -q | head -1) /bin/bash'
alias kpods='kubectl get pods -o wide'
alias klogs='kubectl logs -f $(kubectl get pods | grep Running | head -1 | cut -d" " -f1)'
# 함수로 파라미터를 받는 템플릿 만들기
function dssh() {
# Docker 컨테이너에 SSH처럼 접속
docker exec -it $1 /bin/bash
}
function kexec() {
# Kubernetes Pod에 접속
kubectl exec -it $1 -- /bin/bash
}
Send Hex Code로 특수 키 조합 전송하기
일반적인 텍스트가 아닌 특수 키 조합을 보내야 할 때는 Send Hex Code를 활용해요. 예를 들어 Ctrl+C를 자동으로 보내고 싶다면 hex code 0x03을 전송하면 돼요.
# iTerm2 Key Mappings 설정 예시
# Action: Send Hex Code
# 0x03 - Ctrl+C (프로세스 중단)
# 0x04 - Ctrl+D (세션 종료)
# 0x1A - Ctrl+Z (프로세스 일시정지)
# 0x0C - Ctrl+L (화면 클리어)
이런 설정을 활용하면 현재 실행 중인 프로세스를 중단하고 새 작업을 시작하는 매크로를 만들 수 있어요.
Paste History와 조합한 빠른 명령어 실행
자주 사용하는 긴 명령어는 Paste History에 저장해두고 단축키로 불러오는 방법도 있어요. ⌘+Shift+H로 Paste History를 열고, 자주 쓰는 명령어를 선택해 실행해요.
# 복잡한 git 명령어 예시
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
# 시스템 모니터링 명령어
watch -n 1 'ps aux | head -20 && echo && df -h && echo && free -h'
# 네트워크 디버깅 명령어
netstat -an | grep LISTEN | grep -v localhost
이런 명령어들을 Paste History에 저장해두면 복잡한 옵션을 외울 필요 없이 빠르게 실행할 수 있어요.
프로파일별로 다른 매크로 세트 구성하기
작업 성격에 따라 다른 매크로 세트가 필요하다면 프로파일을 여러 개 만들어 사용해요. 개발용, 서버 관리용, 데이터 분석용 프로파일을 각각 만들고 전환하며 사용하는 거예요.
# 개발용 프로파일 초기 명령어
export ENV=development
source ~/.dev_aliases
echo "🚀 Development Profile Loaded"
# 서버 관리용 프로파일 초기 명령어
export ENV=production
source ~/.server_aliases
echo "🔧 Server Management Profile Loaded"
각 프로파일의 General 탭에서 Send text at start에 위 명령어를 설정하면, 프로파일을 열 때마다 자동으로 환경이 구성돼요.
실제 활용 시나리오별 매크로 예제
매일 반복하는 작업들을 실제로 어떻게 자동화하는지 구체적인 예제를 살펴볼게요.
# 아침 업무 시작 매크로
function morning() {
# Slack 상태 업데이트
curl -X POST https://slack.com/api/users.profile.set \
-H "Authorization: Bearer $SLACK_TOKEN" \
-d "profile={\"status_text\":\"Working\",\"status_emoji\":\":computer:\"}"
# 오늘의 일정 확인
gcalcli agenda
# Git 저장소들 업데이트
for repo in ~/projects/*; do
if [ -d "$repo/.git" ]; then
echo "Updating $(basename $repo)..."
cd "$repo" && git pull
fi
done
# 도커 컨테이너 시작
docker-compose up -d
}
# 코드 리뷰 준비 매크로
function review() {
# 현재 브랜치 푸시
git push origin HEAD
# PR 생성 페이지 열기
open "https://github.com/$(git remote -v | grep origin | head -1 | cut -d: -f2 | cut -d. -f1)/compare/$(git branch --show-current)"
# 변경사항 요약
git log --oneline -5
git diff --stat origin/main
}
iTerm2의 단축키 기능은 단순해 보이지만, 창의적으로 조합하면 강력한 생산성 도구가 돼요. 처음에는 간단한 명령어 하나부터 시작해서, 점차 복잡한 워크플로우를 자동화해 나가는 게 좋아요. 매크로를 만들 때는 자주 반복하는 작업이 무엇인지 먼저 파악하고, 그 작업을 어떻게 단순화할 수 있을지 고민해보세요.