본문 바로가기
Work

[1편] CLI·CUI·GUI 완전 정리 – 개념, 문법, 실무 활용까지 한눈에!

by devjapan 2025. 7. 4.
728x90

CLI, CUI, GUI? 한 번에 정리! 초보자도 이해하는 인터페이스의 모든 것

자동화 스크립트를 배우다 보면 한 번쯤 마주하게 되는 말들이 있습니다. 바로 CLI, CUI, GUI입니다. 각각 이름은 익숙할지 몰라도, 실제로 어떤 차이가 있는지, 어떤 상황에서 무엇을 써야 할지는 막막한 분들도 많습니다.

이 글에서는 개발자뿐만 아니라 비개발자도 이해할 수 있도록 CLI, CUI, GUI의 개념과 차이를 실제 예시와 함께 쉽게 정리해보겠습니다. 특히 PowerShell 기반 스크립트를 만들고자 하는 분들, 업무 자동화에 관심 있는 분들에게 좋은 입문서가 되기를 바랍니다.


1. CLI란? (Command-Line Interface)

CLI(Command-Line Interface)는 말 그대로 "명령줄 인터페이스"입니다. 사용자는 마우스를 쓰지 않고, 키보드로 명령어를 입력해 컴퓨터에게 지시합니다.

CLI는 사용하기 어려워 보일 수 있지만, 익숙해지면 가장 강력한 도구 중 하나가 됩니다. 수많은 시스템 관리자, 서버 개발자, DevOps 엔지니어들이 CLI를 선호하는 이유는 바로 자동화와 반복 작업에 최적화되어 있기 때문입니다.

✅ 예시

# Git에서 현재 브랜치 상태 확인
$ git status

# Node.js 애플리케이션 실행
$ node app.js

# Python으로 스크립트 실행
$ python convert.py --input data.csv --output result.pdf

 

✅ 특징

  • 완전히 텍스트 기반으로 동작하며, GUI 요소는 없음
  • 명령어와 옵션을 정확히 입력해야 하기 때문에 익숙하지 않으면 어려움
  • 대신 자동화에 매우 적합하며, 반복 작업을 빠르게 처리할 수 있음
  • 서버 작업, 배치 스크립트, CI/CD 자동화 등에서 핵심적인 역할을 함

✅ 사용 환경

  • 개발 도구 (ex. Git, Node.js, Java, Maven)
  • 서버 운영 (Linux 환경에서 Apache/Nginx 설정 등)
  • PowerShell, Bash, Zsh 등 명령어 기반 쉘

2. CUI란? (Character User Interface)

CUI(Character User Interface)는 CLI와 비슷하게 키보드 기반으로 조작되지만, 더 구조적이고 사용자 친화적인 출력을 제공하는 인터페이스입니다.

CUI는 CLI보다 한 단계 더 사용자를 배려한 형태라고 볼 수 있습니다. 예를 들어 터미널 기반의 프로그램에서 파일 목록을 표 형태로 보여주거나, 특정 처리가 얼마나 완료되었는지 진행률을 텍스트로 표시해주는 방식 등이 CUI에 해당합니다.

 

✅ 예시

=== PDF 변환기 시작 ===
[1/5] 🔄 변환 중: document1.docx
[2/5] ✅ 변환 완료: document2.docx
[3/5] ❌ 변환 실패: document3.docx (파일 잠김)
=== 처리 완료: 성공 2건 / 실패 1건 ===

또는 다음과 같은 프로그램도 대표적인 CUI입니다:

  • htop (Linux 프로세스 모니터링)
  • vim (문자 기반 텍스트 에디터)
  • PowerShell 콘솔 애플리케이션

✅ 특징

  • CLI보다는 조금 더 인터랙티브함 (상태 메시지, 메뉴 등)
  • 키보드 중심이지만 사용자 경험을 고려한 설계 가능
  • GUI보다 가볍고 CLI보다 친절한 중간 단계

✅ 사용 환경

  • 터미널 기반 프로그램에서 진행 상태를 보여주는 스크립트
  • 관리자용 콘솔 도구, 백업 유틸리티, 로그 분석기 등

3. GUI란? (Graphical User Interface)

GUI(Graphical User Interface)는 사용자가 마우스로 조작할 수 있는 시각적 인터페이스입니다. 우리가 흔히 쓰는 웹 브라우저, 엑셀, 파일 탐색기 등이 모두 GUI입니다.

GUI는 초보자에게 가장 친숙한 인터페이스입니다. 복잡한 명령어나 단축키를 몰라도, 아이콘을 클릭하거나 메뉴를 선택함으로써 다양한 기능을 수행할 수 있기 때문입니다. 또한 최근에는 GUI와 CLI를 병행한 하이브리드 형태의 툴도 많아지고 있습니다.

PowerShell에서도 System.Windows.Forms를 이용하면 간단한 GUI 창을 만들 수 있습니다.

 

✅ 예시 (PowerShell GUI 코드)

Add-Type -AssemblyName System.Windows.Forms
$form = New-Object Windows.Forms.Form
$form.Text = "PDF 변환기"
$form.Width = 500
$form.Height = 200

$button = New-Object Windows.Forms.Button
$button.Text = "변환 시작"
$button.Width = 100
$button.Height = 40
$button.Top = 50
$button.Left = 200
$form.Controls.Add($button)

$form.ShowDialog()

 

 

✅ 특징

  • 직관적이고 마우스 조작에 최적화됨
  • 사용자가 입력 경로를 선택하거나 버튼을 누르는 등 복잡한 조작을 쉽게 수행 가능
  • 일반 사용자에게 매우 친숙

✅ 사용 환경

  • 비개발자 대상 자동화 툴
  • 배포용 도구 (내부 직원이 쓸 때)
  • 데스크탑 앱, 관리용 툴, 퀵 유틸리티

4. CLI, CUI, GUI 비교 정리

항목 CLI CUI GUI
인터페이스 명령줄 문자 기반 메뉴/출력 버튼/창/그래픽
조작 방식 명령어 입력 키보드 조작 마우스 + 키보드
학습 곡선 다소 높음 보통 낮음
자동화 적합성 매우 높음 높음 낮음
사용자 대상 개발자, 자동화 관리자, 운영자 일반 사용자
예시 도구 PowerShell, Bash vim, htop, CUI 로그 앱 크롬, 엑셀, PowerShell WinForms

 

이 표를 보면 각 인터페이스 방식의 특징이 한눈에 들어옵니다. 실제로 실무에서는 이 중 한 가지 방식만 사용하는 경우는 드뭅니다. 상황에 따라 CLI, CUI, GUI를 병행하는 경우가 많고, 그에 따라 개발자는 세 가지 모두에 대한 이해가 필요합니다.


5. 실무에서 왜 중요한가요?

현실에서는 프로그램을 단 하나의 방식으로만 만들 수 없습니다. 사용자 유형이나 사용 목적에 따라 인터페이스 방식을 나누는 것이 중요합니다.

예를 들어, PowerShell로 Office 문서를 PDF로 자동 변환하는 도구를 만든다고 가정해봅시다.

  • 내부 배치나 자동 호출용: CLI 스크립트가 적합합니다.
  • 개발자가 수동으로 테스트할 때: CUI 출력으로 진행상황 확인
  • 일반 직원이 쓸 경우: GUI 기반 도구로 버튼 하나로 처리할 수 있어야 합니다.

CLI만으로 만들어 놓으면 일반 직원이 쓰기 어렵고, GUI만 제공하면 자동화에 적합하지 않습니다. 그래서 하나의 핵심 로직을 기반으로 CLI, CUI, GUI 버전을 각각 만들고, 용도에 맞춰 배포하는 것이 실무에서의 현실적인 접근입니다.

같은 기능이라도 "누가", "언제", "어떻게" 사용할지를 생각해서 인터페이스를 구분해야 합니다.

 

이러한 관점은 특히 내부 도구를 만들거나 배포 자동화를 설계할 때 매우 중요합니다. 그리고 바로 다음 편에서 소개할 실습 예제는, 이 내용을 실전으로 옮겨보는 좋은 기회가 될 것입니다.


6. 다음 편 예고 – 직접 만들어보자!

이해는 했지만, 아직 실감이 나지 않는다면? 직접 만들어보는 게 가장 좋습니다. 다음 편에서는 PowerShell을 이용해 문서 → PDF 자동 변환기를 만들어 보겠습니다.

  • CLI 버전: 명령어로 호출 (자동화 스크립트와 통합 가능)
  • CUI 버전: 콘솔에 상태 메시지를 출력하며 사용자에게 피드백 제공
  • GUI 버전: 버튼을 클릭해서 누구나 쉽게 변환 실행 가능

하나의 공통 기능을 세 가지 방식으로 구현해보면서, 이 개념들이 실제로 어떻게 적용되는지 체감할 수 있을 거예요. 개발자에게는 실무 감각을, 초보자에게는 자신감을 줄 수 있는 좋은 예제가 될 것입니다.

 

728x90