Contents
see ListmacOS는 Unix 기반 운영체제로 강력한 터미널 환경을 제공한다. Homebrew 패키지 관리자와 함께 개발자를 위한 시스템 관���, 자동화, 보안 설정 방법을 정리한다.
1. Homebrew 고급 활용
Homebrew는 macOS의 사실상 표준 패키지 관리자다.
# Homebrew 설치 (미설치 시)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 패키지 관리 기본
brew install node python git # 패키지 설치
brew install --cask visual-studio-code # GUI 앱 설치
brew upgrade # 모든 패키지 업데이트
brew cleanup # 이전 버전 정리
# 유용한 명령어
brew list # 설치된 패키지 목록
brew info node # 패키지 정보
brew deps --tree node # 의존성 트리
brew leaves # 최상위 패키지만 (의존성 제외)
# Brewfile로 환경 일괄 관리
brew bundle dump --file=~/Brewfile # 현재 ��경 내보내기
brew bundle --file=~/Brewfile # 환경 복원
# Brewfile 예시
# tap "homebrew/cask-fonts"
# brew "git"
# brew "node"
# brew "python@3.12"
# brew "jq"
# brew "ripgrep"
# cask "iterm2"
# cask "visual-studio-code"
# cask "docker"
2. 개발자 필수 CLI 도구
# 모던 CLI 도구 설치
brew install ripgrep # grep 대체 (rg) - 10배 빠름
brew install fd # find 대체 - 직관적 문법
brew install bat # cat 대체 - 구문 강조
brew install eza # ls 대체 - 아이콘, Git 상태
brew install fzf # 퍼지 파인더
brew install jq # JSON 처리
brew install httpie # curl 대체 - 직관적 HTTP
brew install tldr # man 대체 - 실용적 예제
brew install zoxide # cd 대체 - 스마트 디렉토리 이동
# ripgrep 활용
rg "TODO" --type py # Python 파일에서 TODO 검색
rg "function" -l # 매칭 파일명만 출력
rg "import.*react" -g "*.tsx" # glob 패턴으로 파일 필터
# fd 활용
fd "*.json" --max-depth 3 # JSON 파일 찾기
fd -e py --exec wc -l # Python 파일별 라인 수
fd -H ".env" # 숨김 파일 포함 검색
# bat 활용
bat src/main.py # 구문 강조 출력
bat -d src/main.py # diff 모드
bat --style=numbers,grid file.js # 스타일 지정
# jq 활용
cat data.json | jq '.users[] | .name' # 사용자 이름 추출
curl -s https://api.example.com | jq '.data | length' # API 응답 처리
echo '{"a":1}' | jq '. + {"b":2}' # JSON 수정
3. 쉘 설정 최적화 (Zsh)
# .zshrc 설정
# Oh My Zsh 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 유용한 alias 설정
alias ll='eza -la --git --icons'
alias cat='bat --paging=never'
alias find='fd'
alias grep='rg'
alias top='htop'
# Git alias
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph -20'
alias gd='git diff'
# Docker alias
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}} {{.Status}} {{.Ports}}"'
# 디렉토리 이동
alias ..='cd ..'
alias ...='cd ../..'
alias proj='cd ~/projects'
# PATH 설정
export PATH="/opt/homebrew/bin:/Users/daeilsun/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/daeilsun/.claude/plugins/cache/claude-plugins-official/telegram/0.0.4/bin"
export PATH="/Users/daeilsun/.local/bin:/Users/daeilsun/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/daeilsun/.claude/plugins/cache/claude-plugins-official/telegram/0.0.4/bin"
# fzf 설정
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow'
export FZF_CTRL_T_COMMAND=""
# zoxide 초기화
eval "$(zoxide init zsh)"
# z projects # ~/projects로 바로 이동 (학습 기반)
4. LaunchAgent/LaunchDaemon (자동화)
macOS에서 스케줄 작업을 설정하는 방법이다. crontab보다 LaunchAgent를 권장한다.
# ~/Library/LaunchAgents/com.myapp.backup.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.myapp.backup</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/me/scripts/backup.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/backup.log</string>
<key>StandardErrorPath</key>
<string>/tmp/backup.error.log</string>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
# LaunchAgent 관리 명령어
launchctl load ~/Library/LaunchAgents/com.myapp.backup.plist
launchctl unload ~/Library/LaunchAgents/com.myapp.backup.plist
launchctl list | grep myapp
launchctl start com.myapp.backup # 수동 실행
5. 시스템 관리 명령어
# 디스크 관리
diskutil list # 디스크 목록
diskutil info /dev/disk0s1 # 디스크 정보
diskutil eraseDisk APFS MyDisk /dev/disk2 # 디스크 포맷
# 네트워크 관리
networksetup -listallhardwareports # 네트워크 인터페이스 목록
networksetup -getinfo Wi-Fi # Wi-Fi 정보
scutil --dns # DNS 설정 확인
sudo dscacheutil -flushcache # DNS 캐시 초기화
# 프로세스 관리
lsof -i :8080 # 포트 사용 프로세스 확인
kill -9 478 # 포트 점유 프로세스 종료
caffeinate -t 3600 # 1시간 동안 잠자기 방지
# 시���템 정보
system_profiler SPHardwareDataType # 하드웨어 정보
sw_vers # macOS 버전
sysctl -n machdep.cpu.brand_string # CPU 정보
sysctl -n hw.memsize | awk '{print /bin/zsh/1073741824"GB"}' # 메모리
# Spotlight 관리
mdutil -s / # 인덱싱 상태
sudo mdutil -i off /Volumes/Data # 특정 볼륨 인덱싱 끄기
# 보안 관련
sudo spctl --master-enable # Gatekeeper 활성화
xattr -d com.apple.quarantine app.zip # 격리 속성 제거
codesign -dv --verbose=4 /path/to/app # 코드 서명 확인
6. SSH 설정 관리
# ~/.ssh/config
Host prod-server
HostName 10.0.1.100
User deploy
Port 2222
IdentityFile ~/.ssh/prod_key
ServerAliveInterval 60
Host dev-*
User developer
IdentityFile ~/.ssh/dev_key
ProxyJump bastion
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/bastion_key
# SSH 키 생성
ssh-keygen -t ed25519 -C "dev@example.com" -f ~/.ssh/dev_key
# SSH 에이전트에 키 추가 (Keychain 연동)
ssh-add --apple-use-keychain ~/.ssh/dev_key
# 접속
ssh prod-server # 별칭으로 바로 접속
ssh dev-web01 # dev-* 패턴 매칭
macOS는 개발자에게 Unix의 강력함과 GUI의 편의성을 동시에 제공한다. Homebrew로 도구를 관리하고, ��던 CLI 도구로 생산성을 높이며, LaunchAgent로 자동화를 구축하면 효율적인 개발 환경을 만들 수 있다.