CLI란 무엇인가?
CLI (Command Line Interface)는 키보드를 통해 명령어를 입력하고 결과를 확인하는 방식입니다. 대표적인 예로는 Ubuntu의 bash, zsh 같은 셸 환경이 있습니다. CLI는 자원 사용이 적고 빠르며, 원격 서버 관리 및 자동화에 강력합니다. 특히 리눅스 서버, 클라우드 환경(AWS EC2 등)에서는 기본적으로 GUI가 없기 때문에 CLI 사용은 선택이 아니라 필수입니다.
CLI 환경에서는 다음과 같은 일이 가능합니다:
- SSH를 통한 원격 접속
- 서버 설정 및 유지보수 (
systemctl,journalctl,ufw) - Python, Git, Docker 등의 개발 도구 설치 및 실행
- 텍스트 기반 LLM 모델 실행 및 추론 스크립트 관리
GUI란 무엇인가?
GUI (Graphical User Interface)는 아이콘, 버튼, 창 등의 시각적 요소를 통해 컴퓨터를 조작하는 방식입니다. Windows의 바탕화면, 파일 탐색기, 설정 앱이 모두 GUI의 예입니다.
Ubuntu에서도 gnome, xfce, kde와 같은 데스크탑 환경이 GUI를 제공합니다. GUI는 입문자에게 친숙하고, 시각적으로 디렉토리 탐색이나 설정 변경이 가능하다는 장점이 있습니다. 그러나 리눅스 서버 환경에서는 GUI가 기본적으로 설치되어 있지 않으며, 원격에서 GUI를 사용하는 것은 X11 포워딩 등의 복잡한 설정을 필요로 하므로 일반적인 실무에서는 사용되지 않습니다.
CLI vs GUI 비교표
| 항목 | CLI (Command Line Interface) | GUI (Graphical User Interface) |
|---|---|---|
| 서버 환경 사용 가능성 | 필수 (클라우드/서버 환경에서는 기본) | 일반적으로 사용 불가 |
| 원격 접속 지원 | SSH 기본 지원 (ssh user@ip) | X11 forwarding 필요 (복잡하고 느림) |
| 주요 환경 | 터미널 (bash, zsh 등) | 데스크탑 환경 (gnome, xfce, kde 등) |
| 사용 목적 | 원격 서버 관리, 자동화, 정밀 제어 | 로컬 조작, 시각적 환경 활용, 입문자 실습 |
| 시스템 접근 수준 | 커널, 서비스, 권한, 프로세스 등 낮은 수준까지 제어 가능 | 설정 가능한 범위 제한적 |
| 접근 방식 | 키보드 입력 중심 | 마우스 조작 + 키보드 |
| 속도 및 자원 사용 | 매우 빠르고 가벼움 | 상대적으로 느리고 자원 사용량 큼 |
| 학습 난이도 | 상대적으로 높음 (명령어 숙지가 필요함) | 낮음 (직관적 조작 가능) |
| 대표 도구 예시 | vim, tmux, apt, systemctl, htop | gedit, 파일 탐색기, 시스템 설정 |
| 패키지 설치 및 관리 | apt, pip, conda 등 명령어 기반 패키지 관리 | Software Center 등 GUI 기반 설치 관리 |
| 파일 탐색 및 편집 | cd, ls, nano, rm, mv, grep 등 텍스트 기반 조작 | Nautilus 등 GUI 파일 탐색기 및 GUI 에디터 사용 |
| 사용자 권한 관리 | sudo, chmod, /etc/passwd 수정 가능 | GUI에서는 제한적 (기본 계정 설정 정도) |
| 멀티태스킹 | tmux, screen 등 터미널 세션 관리 | 탭/창 기반 GUI 멀티태스킹 지원 |