
그동안의 나는 GUI(Graphical User Interface)에 익숙한 삶을 살았다.
오늘은 그 너머의 숨어 있는 Terminal과 CLI(Command Line Interface)의 세계를 직접 다루고,
이를 통해 컴퓨터가 “어떻게 명령을 처리하는지” 이해한 내용을 정리해 보려 한다.
GUI는 편리하지만, 컴퓨터의 내부 흐름을 가장 정확하게 보여주는 것은 CLI다.
CLI를 제대로 이해해야, “컴퓨터가 무엇을 하고 있는지”, “프로그램이 어떤 방식으로 실행되는지”가
훨씬 투명하게 다가올 것이다.

[출처: 위키피디아_터미널]
사용자가 컴퓨터에 명령을 입력하는 인터페이스(창)을 의미한다.
과거에는 하드웨어 기기였지만,
현재는 Windows의 PowerShell, macOS의 터미널과 같이
CLI를 통해 OS와 상호작용할 수 있는 소프트웨어를 의미한다.
단순 '창'일 뿐이고, 실제 명령 처리는 Shell이 수행한다.

[출처: 위키피디아_셸]
명령을 입력하면 이를 해석하고 실행해주는 프로그램이다.
사용자가 입력한 명령어를 해석해 운영체제(정확히는 커널)가 이해할 수 있도록 하며,
운영체제의 종류에 따른 Shell의 종류는 아래와 같다.
< 운영체제별 Shell 종류 및 작동 방식 정리 >
🍎 macOS — 유닉스 기반 시스템
✔ 기본 Shell
✔ 특징
✔ 작동 방식
즉, 명령 → 셸 해석 → 커널 전달 → 처리 → 셸 출력
✔ 실행 방법
Command+Space를 눌러 Spotlight 검색 창을 열고 "터미널"을 검색하여 실행
[캡쳐 1-1. macOS에서의 터미널 실행 화면]
🐧 Linux — 유닉스 계열 대표 OS
✔ 기본 Shell
✔ 특징
✔ 작동 방식
명령 → 셸에서 파싱 → 시스템 호출 → 커널(Linux kernel) → 실행
✔ 실행 방법
Ctrl+Alt+T를 눌러 터미널을 바로 실행할 수 있음 🪟 Windows — 전통적으로 비유닉스 OS
Windows는 오래전부터 UNIX의 셸과 구조가 달랐기 때문에
셸 종류가 크게 두 가지로 구분된다.
(1) CMD (Command Prompt)
✔ 특징
✔ 실행 방법
Win+R → cmd를 입력하고 Enter를 누르면 실행 됨(2) PowerShell (현대적 Windows Shell)
✔ 특징
✔ 실행 방법
✔ Windows Shell 작동 방식
macOS/Linux는 “문자열 기반 파이프라인”,
PowerShell은 “객체 기반 파이프라인”이라는 차이가 존재한다.
🪟🐧 WSL(Windows Subsystem for Linux) — Windows 환경에서의 리눅스 셸
WSL은 Windows 안에서 실제 Linux 커널과 Linux Shell(bash/zsh)을 사용할 수 있게 한다.
✔ 왜 등장했나?
✔ 특징
✔ 실행 방법
cmd 또는 PowerShell에서 wsl 명령을 입력하여 접속
[출처: 위키피디아_명령줄 인터페이스]
명령어 기반 인터페이스 전체를 지칭하는 개념.
GUI와 달리 “문자 기반” 명령으로 컴퓨터를 조작한다.
비유하자면,
“GUI는 버튼식 자동판매기", "CLI는 직접 조작하는 제조 기계”
GUI는 버튼만 누르면 결과가 나오지만,
CLI는 내가 직접 명령을 입력해 기계를 조작하는 방식이다.
CLI는 컴퓨터 내부 구조를 이해하는 데 필수이고
자동화, 서버, 백엔드, 데이터 분야에서는 기본 언어이며
작업 효율을 극대화하는 도구다.
(1) 디렉토리 내 파일 목록 보기 - 디렉토리 내 파일과 폴더 목록을 표시할 때 사용
ls 또는 ls -l(상세 정보 표시)를 입력하여 실행
[캡쳐 2-1. 파일 목록 보기 명령어 연습]
(2) 디렉토리 생성
mkdir (생성하고자 하는 디렉토리 이름)(3) 디렉토리 이동
cd입력 후 한 칸을 띄우고 /경로를 정확히 입력해야 실행된다
[캡쳐 2-2. 디렉토리 생성 및 이동 명령어 연습]
(4) 파일 생성
echo (담을 내용) > (만들 파일명).txt
[캡쳐 2-3. 파일 생성 문제 해결]
(5) 파일 복사
cp (복사할 파일명) (복사후 파일명)
[캡쳐 2-4. 파일 복사 명령어 연습]
(6) 파일 및 디렉토리 삭제
rm (파일명)rm -r을 사용하여 재귀적으로 삭제해야 함!
[캡쳐 2-5. 파일 및 디렉토리 삭제 명령어 연습]
(1) 파일 내용 출력 - 파일의 내용을 터미널에 출력
cat (파일명)(2) 텍스트 출력 - 화면에 문자열을 출력하는 데 사용
echo (문자열)
[캡쳐 2-6. 파일 내용 출력 및 텍스트 출력 명령어 연습]
(1) 현재 작업 디렉토리 표시 - 현재 디렉토리의 경로를 출력하는 데 사용
pwd
[캡쳐 2-7. 경로가 정상적으로 출력된 모습]
(2) 터미널 화면 지우기 - 화면을 깨끗하게 초기화하기 위해 사용
clear추가적으로 다른 명령어를 연습해보기 전에 기본적인 CS 개념을 간략하게 정리하고 넘어가려 한다.
(내가 이해한 내용을 바탕으로 OS를 국가 정부로 빗대어 설명해보겠다.)
🌎 컴퓨터(Hardware) = ‘국가 전체’
물리적 부품(메모리, 저장장치, CPU, 메인보드 등)은
모두 이 나라를 구성하는 땅과 인프라에 해당한다.
컴퓨터가 존재해야 OS가 입주하고, 프로그램이 실행될 수 있다.
🏛️ 운영체제(OS) = ‘정부’
정부가 나라를 운영하듯,
OS는 컴퓨터 자원을 관리하고 프로그램이 잘 실행되도록 중재한다.
✔ OS가 하는 일
MacOS, Windows, Linux가 각각 독립된 ‘정부 체제’라고 보면 된다.
다만, 환경의 특수성에 따른 호환 문제를 설명하기 위해
🍎 macOS (애플 행성)
🪟 Windows (범용 정부)
🐧 Linux (자유 정부)
이와 같이 행성에 빗대어 이해하였다.
🧠 커널(Kernel) = ‘정부의 핵심 관료 조직’
정부가 모든 일을 직접 하지 않고 핵심 부처가 실무를 맡듯,
커널은 OS의 핵심 기능을 직접 수행하는 ‘최핵심 실행 조직’이다.
✔ 커널이 하는 일
💾 RAM(Random Access Memory) = ‘관료가 업무를 수행할 수 있는 건물’
프로그램이 실제로 작업할 수 있는 활동 공간.
전원이 꺼지면 내용이 사라지는 휘발성의 특성을 가진다.
건물이 클수록 더 많은 프로그램이 동시에 실행 가능.
프로세스가 실행되기 위해서는 반드시 RAM 위에 올라와야 한다.
📚 ROM / Firmware = ‘정부 출범 전 기본 규약(헌법 초안)’
ROM(Read-Only Memory)은 변경 불가 저장공간(읽기 전용 메모리)이며,
컴퓨터가 부팅될 때 가장 먼저 실행되는 펌웨어(BIOS/UEFI)가 위치한다.
이것은 “공식 정부가 출범하기 전에 반드시 존재해야 하는 최소 규칙”이라 볼 수 있다.
🏢 SSD/HDD = ‘국가 기록 보관소’
모든 프로그램, 문서, 파일이 저장되는 장소.
전원이 꺼져도 내용이 유지된다(비휘발성).
👷🏻♀️ CPU = ‘공무원(업무 처리자)’
프로그램의 실제 연산을 수행하는 실행 조직.
공무원이 많을수록(코어 수 ↑) 병렬 작업이 강하고,
공무원의 처리 속도가 높을수록(클럭 ↑) 프로그램 실행이 빨라진다.
📖 프로그램(Program) = ‘규정집 / TF팀 매뉴얼’
기록 보관소(SSD/HDD)에 저장된 ‘실행 계획서’.
아직 나라에서 실행되고 있지 않은 상태.
⚙️ 프로세스(Process) = ‘실제로 일하는 TF팀’
프로그램이 실행되어 RAM + CPU를 부여받은 상태.
하나의 프로그램이 여러 프로세스로 실행될 수도 있다(여러 TF팀).
RAM을 공간으로 사용하며 CPU를 통해 일을 처리한다.
🧭 PATH = ‘기록 보관소의 서가 번호’
OS가 프로그램을 실행할 때 어디에 있는지 찾기 위한 주소 목록.
PATH가 올바르게 설정되지 않으면
프로그램이 존재해도 OS가 “어디에 있는지 몰라서” 실행할 수 없다.
이렇게 CS 기초 개념을 정리한 것은 프로그램과 프로세스의 차이,
PATH가 왜 중요한지를 이해해야 하기 때문이다.
그럼 이제 추가적으로 학습한 명령어들을 정리해보도록 하겠다.
(1) 실행 중인 프로세스 목록 보기 - 현재 실행 중인 프로세스를 확인하는 데 사용
PS - 현재 터미널과 연관된 프로세스 보기ps -ax - 모든 실행중인 프로세스 보기-a: 다른 사용자의 프로세스를 포함하여 모든 사용자 프로세스 표시-x: 제어 터미널이 없는 프로세스도 포함하여 표시ps aux - 모든 프로세스 상세 정보 보기(USER, PID, %CPU, %MEM 등 자세한 정보 출력)PS -u (사용자 이름) - 특정 사용자 프로세스 보기ps aux | grep (검색어) - 특정 프로세스 검색ps -axj - 프로세스 계층 구조 트리 형태로 보기PPID(부모 프로세스 ID)를 포함하여 프로세스 간의 관계를 파악하는 데 유용(2) 프로세스 종료 - 특정 프로세스를 종료할 때 사용된다
kill PID or kill -15 PID (종료하고자 하는 프로세스의 ID를 입력하면 된다)
[캡쳐 3-1. 프로세스 목록 보기 결과 및 kill 명령어 수행 결과]

[출처: 특정 프로세스 종료하기, kill -9 주의점]
네트워크 연결 테스트 - 두 쉘에서 네트워크 연결을 확인하기 위해 사용해 사용
ping google.comping명령어는 사용자가 Ctrl+C를 누르기 전까지ping -c (횟수) google.com(1) 시스템 경로 확인 - 경로 변수를 출력할 때 사용
echo $PATH$Env:PATH(2) 환경 변수 설정 - export

[캡쳐 3-2. 시스템 경로 확인 및 환경 변수 설정 연습]
오늘 배운 내용을 종합해서 수행한 과제 결과를 끝으로 오늘의 일기를 마무리한다.

[캡쳐 4-1. 폴더 생성 + 텍스트 파일 생성 및 복사 + 파일 내용 출력]
[참고한 사이트 목록]