C.W.K.
Stream
Lesson 06 of 10 · published

Unix 철학

~10 min · philosophy, composition, history

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

1978 년의 네 줄

Doug McIlroy 가 Unix 설계를 네 줄로 정리, 지금도 유효:

  1. 한 프로그램은 한 가지를 잘 해라.
  2. 모든 프로그램의 출력이 아직 모르는 다른 프로그램의 입력이 될 거라 가정해라.
  3. 소프트웨어 (OS 포함) 를 일찍 — 가능하면 몇 주 안에 — 시도할 수 있게 설계해라.
  4. 프로그래밍 작업을 가볍게 하기 위해 도구를 우선해라. 도구를 만들기 위해 우회해야 해도, 그리고 다 쓴 후 일부는 버려야 해도.

왜 지금도 중요한가

현대 대응: microservice (1), JSON pipeline (2), MVP / 지속 배포 (3), 빌드 스크립트와 CI 도구 (4). 지금 하는 모든 개발 관행이 이 네 줄의 후손이야.

구체적 습관

  • 평문 우선. 로그, 설정, 데이터 — 텍스트 먼저, binary 는 강제될 때만. 텍스트는 파이프 타고, binary 는 안 타.
  • 한 command 한 일. shell function 이 300 줄이면 그건 조립 안 되는 도구. 쪼개.
  • 출력은 계약. 헤더, 컬럼, 고정 구분자로 안정적 출력하는 프로그램이 파이프 가능. 사람용 pretty-print 는 별도 flag 로.
  • 에러는 stderr, 데이터는 stdout. 무조건.

예외 — jq + 구조화 데이터

중첩 JSON 에는 line-oriented pipe 모델이 깨져. 현대 Unix 는 이걸 인정 — jq, yq, dasel 가 일등 시민. JSON 스트림도 조립 가능하게 만들어주니까. 철학은 그대로, 데이터 모양만 바뀜.

Code

Monolith 대신 조합·bash
# Bad — invent a new tool
# (would need a custom Python script)
# Good — compose existing tools
git log --pretty=format:'%an' \
  | sort | uniq -c | sort -rn | head

External links

Exercise

보통이면 Python 50 줄로 풀 문제 하나 골라서 한 줄 shell 파이프로 다시 써봐. 예: git repo 의 distinct author 수 + 빈도 정렬. 가능했으면 Unix 철학 체화한 거.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.