유닉스 커맨드 시작하기

jin·2025년 8월 27일

unix command

목록 보기
1/7

🌐 GUI, CLI 그리고 Unix 계열 운영체제 & 쉘 총정리

0. GUI vs CLI

  • GUI (Graphical User Interface)

    • 그래픽 기반 인터페이스. 아이콘, 버튼, 창 등을 마우스나 터치로 조작.
    • 직관적이고 배우기 쉽지만, 반복 작업·대량 작업·자동화에는 비효율적.
    • 예: Windows 바탕화면, macOS Finder.
  • CLI (Command Line Interface)

    • 텍스트 기반 인터페이스. 사용자가 직접 명령어를 입력해 조작.
    • 조합, 파이프(|), 리다이렉션(>) 등을 활용해 자동화·정밀 제어 가능.
    • 서버, 개발, 원격 접속 환경에서 필수적.
    • 예: ls -la, grep "error" log.txt, git commit.

➡️ GUI는 직관성, CLI는 유연성과 효율성이 강점. 두 가지는 상호 보완적으로 사용됨.


1. 유닉스(Unix)의 시작

  • 1970년대 초반, 미국 벨 연구소켄 톰슨데니스 리치가 개발.
  • 목표: 개발자들이 소프트웨어를 쉽게 개발·실행할 수 있는 플랫폼 제공.
  • 대부분 C언어로 작성 → 수정·이식이 용이해 큰 인기를 끔.
  • 유닉스의 인기는 C 언어의 인기와도 맞물려 급격히 성장.

POSIX 표준

  • 유닉스 변형이 너무 많아지자, 어느 정도 호환성을 확보하기 위해 POSIX 표준 제정.
  • POSIX를 만족하면 공식 Unix 인증을 받을 수 있고, 그렇지 않아도 동작이 유사하다면 **Unix-like(유사 유닉스)**라 불림.

2. GNU와 리눅스(Linux)의 등장

  • 당시 유닉스는 AT\&T 소속이었기 때문에 라이선스 비용을 지불해야 했음.
  • 공유와 자유를 중시한 개발자들은 반발 → 자유 소프트웨어 재단(FSF, Free Software Foundation) 설립.

GNU 프로젝트

  • **“GNU's Not Unix”**라는 이름으로 시작.
  • 목표: 유닉스를 모방하되, 코드 공유·무료 배포 가능한 운영체제 만들기.
  • 단점: **운영체제의 핵심(커널)**은 오랫동안 완성되지 못함.

리누스 토발즈와 리눅스 커널

  • 핀란드 헬싱키 대학생 리누스 토발즈가 1991년 교육용 유닉스(MINIX)에서 영감을 받아 Linux 커널 개발.
  • GNU 프로젝트는 이 커널을 채택 → GNU + Linux Kernel = GNU/Linux 운영체제 완성.

리눅스 배포판

  • GNU/Linux는 무료·개방 → 전 세계적 폭발적 확산.
  • 다양한 배포판 등장: Ubuntu, Red Hat, Debian, CentOS 등.
  • 지금 우리가 흔히 “리눅스(Linux)”라 부르는 것은 사실 운영체제 전체라기보다 리눅스 커널.

3. BSD와 macOS의 계보

  • BSD (Berkeley Software Distribution): 1978년 UC 버클리 대학에서 기존 유닉스를 개량해 개발.
  • 버전이 올라가면서 널리 쓰였고, 4.3BSD까지 발전.

NeXTStep

  • 스티브 잡스가 Apple에서 쫓겨난 후 설립한 NeXT에서 4.3BSD를 기반으로 NeXTStep 운영체제 개발.
  • 혁신적인 기술로 주목받음.

macOS의 탄생

  • Apple은 자체 차세대 OS 개발에 실패 → 결국 NeXT를 인수.
  • NeXTStep 기반으로 Apple 기기에 맞춰 이식 → 오늘날 macOS, iOS, watchOS로 발전.
  • macOS는 POSIX 인증을 받은 공식 Unix.

4. Unix 계열 운영체제의 공통점

  • Linux, macOS, BSD 모두 POSIX 표준을 기반으로 하거나 유사하게 동작.
  • 따라서 명령어 수준에서 거의 동일.
  • 개발자가 OS 내부 커널 개발자가 아니라면, Linux나 macOS나 사용 경험은 크게 차이 없음.
  • 이것이 “유닉스 계열 운영체제”에서 공통 Unix 명령어를 쓸 수 있는 이유.

5. WSL과 가상 머신

WSL (Windows Subsystem for Linux)

  • Windows에서 **리눅스 배포판(Ubuntu, Debian 등)**을 직접 실행 가능.
  • Git Bash처럼 “흉내”가 아니라, 실제 리눅스 환경 제공.
  • WSL1: 시스템 콜 변환 (가볍지만 일부 호환성 한계).
  • WSL2: 경량 VM 기반 (호환성·성능 향상, Docker 실행 가능).

가상 머신(Virtual Machine)

  • 운영체제를 통째로 가상화해서 실행 (예: VMware, VirtualBox).
  • 장점: 완전 독립 환경 (보안·실험에 유리).
  • 단점: 자원 소모 큼, 무겁고 느림.

선택 기준

  • WSL: 개발·일상 작업 (가볍고 빠름).
  • VM: 완전한 독립성이 필요한 실험/보안 환경.

6. 터미널과 쉘

터미널 (Terminal)

  • 입력/출력 UI 프로그램.
  • 자체적으로 명령 해석 불가.
  • 예: macOS Terminal, iTerm2, GNOME Terminal, Windows Terminal.

쉘 (Shell)

  • 명령어 해석·실행 프로그램.

  • 터미널 안에서 실행됨.

  • 예:

    • bash (Bourne Again Shell): 가장 보편적, Ubuntu 기본.
    • zsh (Z Shell): bash 확장, macOS Catalina 이후 기본.
    • fish, tcsh 등.

7. Windows의 쉘과 터미널

  • cmd.exe: 오래된 기본 쉘. 기능 제한적.
  • PowerShell: 객체 지향 기반 쉘. Windows 자동화에 강력. Git 명령어도 실행 가능.
  • Windows Terminal: 여러 쉘(cmd, PowerShell, WSL, Git Bash 등)을 실행할 수 있는 터미널(UI).

8. Git Bash

  • Windows에서 Git 설치 시 함께 제공되는 터미널+쉘 환경.
  • 내부적으로 bash 흉내ls, pwd, grep, touch 등 유닉스 명령 실행 가능.
  • Git 튜토리얼 대부분이 리눅스 기준이므로, Windows 사용자가 그대로 따라 하기 편리.
  • 하지만 Git만 쓰려면 PowerShell도 충분.
  • 리눅스 명령어까지 같이 쓰고 싶다면 Git Bash가 유리.

9. 전체 비교 요약

구분역할예시/특징
GUI그래픽 인터페이스Windows 바탕화면, macOS Finder
CLI텍스트 명령어 인터페이스터미널 + 쉘
Unix원조 OS, 1970s Bell LabsPOSIX 표준, 다양한 변형
LinuxUnix-like (무료/개방)Ubuntu, Debian, Red Hat 등
macOSBSD 기반, 공식 UnixNeXTStep에서 발전
WSLWindows 내 진짜 리눅스Ubuntu, Debian 실행 가능
VM운영체제 전체 가상화독립성↑, 자원 소모 큼
터미널입출력 UImacOS Terminal, iTerm2, Windows Terminal
명령 해석기bash, zsh, fish, PowerShell, cmd.exe
bash가장 보편적 쉘Ubuntu 기본, macOS 구버전
zshbash 확장판macOS Catalina 이후 기본
PowerShellWindows 쉘.NET 객체 기반, 자동화 강력
Windows Terminal터미널(UI)여러 쉘 실행 가능
Git BashWindows용 bash 환경Git + 리눅스 명령 지원

🔑 핵심 요약

  • GUI = 그래픽, CLI = 텍스트 명령어
  • Unix → BSD/macOS(공식 Unix), GNU/Linux(Unix-like)
  • POSIX 표준이 공통 기반 → 명령어 사용 경험 거의 동일
  • WSL = Windows에서 리눅스 실행, VM = 무겁지만 완전 독립
  • 터미널 = 껍데기(UI), 쉘 = 엔진(해석기)
  • Git Bash = Windows용 간이 리눅스 쉘, PowerShell = Windows 쉘, Windows Terminal = 터미널(UI)

0개의 댓글