최근 수정 시각 : 2024-10-23 16:41:51

CLI

CUI에서 넘어옴
파일:clireplacement.png
대표적인 CLI Bash

1. 개요2. 장점3. 단점4. 사례5. 프롬프트6. 관련 문서

1. 개요

명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface의 줄임말로 글자를 입력하여 컴퓨터에 명령을 내리는 방식이다. 모니터가 컴퓨터에 기본으로 장착되기 전에도 전신 타자기를 이용해 널리 사용되었다. 타자기로 명령어를 입력하면 결과값을 다시 타자로 쳐 출력하는 방식.

가장 대표적인 예시로는 DOS, 명령 프롬프트, Bash로 대표되는 UNIX 셸 환경이 있다. macOS에서는 Terminal, Windows의 Windows Terminal 등이 있다.

2. 장점

GUI가 대체할 수 없는 장점도 있다. 자원을 적게 잡아 먹으면서 안정적이고 빠르다. 게다가 원격으로 작업할 때 웬만한 네트워크 환경에서도 안정적으로 작업할 수 있으며 사용되는 데이터 양 역시 압도적으로 적다. 특히 서버 쪽에서는 작업 자동화[1]와 원격 작업이 필요한 경우가 많은데 CLI는 이 분야에서 압도적인 효율을 보여준다. 일단 CLI로 작업하는 사람은 대부분 최종 사용자가 아니라 충분히 교육된 사람이기에 진입장벽이 크게 문제가 되지 않는다.

프로그래밍 교육의 경우 말할 것도 없는데, 당장 프로그래밍 첫 예제가 무엇인지 생각하면 간단할 것이다. 우선, GUI 프로그래밍에 비해 사전지식이 매우 적게 요구되며[2], 실제로 프로그래밍을 할 때 가장 많이 다루는 데이터셋이 문자열이기도 한데다가, 문자열만 가지고도 거의 모든 종류의 알고리즘 연습은 다 가능하기 때문에 CLI부터 시작하는 것.

3. 단점

일반적으로 CLI은 불친절한 환경으로 여겨진다. CLI에 익숙해지려면 기본적인 명령어들을 외워야 하는 것부터 난관인데, 깊게 들어갈수록 프로그래밍과 관련 있는 파이프 및 셸 스크립트까지 내려가기 때문에 배워야 할 게 끝이 없다. 당연히 대부분의 사람들은 키보드 및 마우스를 통하여 접근하는 직관적인 GUI를 선호할 수밖에 없다. 이 때문에 CLI는 최종 사용자(일반인) 수준에서는 GUI로 완전히 대체되었다. 아직까지 CLI가 남아있는 분야는 서버 관리 및 서버 프로그래밍처럼 프로그래밍과 접점이 닿아있는 부분이다.

4. 사례

Linux 진영이 CLI에 익숙한 편이다. 이런 사람들은 GUI 윈도우 매니저 위에 '터미널 에뮬레이터'를 이용하여 CLI를 부분적으로 통합시켜서 쓴다. Windows에서 명령 프롬프트나 COMMAND.COM을 띄워 놓고 사용한다고 생각하면 된다. 물론 차이는 엄청나다. 안 좋다는 의미가 아니고 심지어 더 좋은 경우가 많다. 특수 글꼴과 다양한 색상을 적용시켜 터미널을 알록달록하게, 그리고 가독성 좋게 만들 수 있다.[3] 특히 macOS에서 돌아가는 iTerm2는 이 분야의 최강자.

개인이 직접 웹사이트블로그, 소규모 쇼핑몰 등을 만들어 운영할 때도 보게 된다. 웹 호스팅 서버에 웹사이트나 블로그 소스 파일 관리를 위해 SSH로 접속하면 이미지 없이 글자만 주르륵 뜨는 화면이 뜨는데, 그게 바로 CLI 중 하나인 리눅스 터미널 환경이다. 물론 웹 호스팅 업체도 개인 웹사이트나 블로그, 쇼핑몰 운영을 위해 개인이 CLI을 배우는 건 어렵다는 것을 알고 있기에 최대한 CLI를 만나지 않도록 서비스를 구성한다. 그러나 조금 파고들다 보면 어쩔 수 없이 CLI를 만나게 되는 것이 현실. 이게 싫으면 윈도우 웹 호스팅을 받으면 되지만 윈도우는 무료가 아니라 호스팅 비용도 비싸다(...). 물론 리눅스도 GUI를 지원하는 배포판이 있기는 하지만[4][5] CLI에 비해서 성능 상으로 비효율적인 것은 어쩔 수 없다.

그 외에도 분야에 따라 활용도가 미친 듯이 올라가기도 한다. 의외로 물리학자들이 많이 쓰는데, 특히 입자물리 계열의 사람들은 대부분 이 환경에서 작업을 한다. 대부분의 입자물리용 프로그램들이 리눅스 환경에서 돌아가기 때문에 그렇다.이 분야 사람들은 사실상의 강요(?!)로 이 환경에 친숙해진 상황이며, 간혹 자신이 물리학자인지 프로그래머인지 혼란스럽다는 입자물리학자들의 성토도 있곤 한다.

뭔가 알아볼수 없는 글자들이 내려오면서 실행되는 모습이 신기한지, 미디어에서는 해커나 컴퓨터 계열 천재속성의 캐릭터가 자주 사용한다. 그래서 이런 것도 나왔다. 터미널 폰트까지 DOS스러운 걸로 바꿔주면 금상첨화. 그리고 유독 바탕색은 검은색으로 하는 경우가 많다. 사용자들 중엔 가독성 때문에 흰 바탕을 쓰는 경우도 많다. 물론 검은 바탕이 휘도가 낮아 눈의 피로가 덜하다는 이유로 검거나 어두운 색 바탕을 쓰는 사람 역시 많아 다 취향따라 제각각이긴 하다. 다만 어두운 곳에서 사용하는 경우 다크 모드가 눈에 훨씬 좋지만, 밝은 환경에서 사용할 경우에는 오히려 다크 모드가 독이 된다는 점을 명심하자.

5. 프롬프트

CLI 명령줄 프롬프트(prompt)
user000@Home:~$
유닉스나 리눅스 환경의 프롬프트 라인의 예시
PS ~ >
MS윈도우의 파워셸 프롬프트 예시

6. 관련 문서



[1] 여기서 파이프와 셸 스크립트가 강점을 발휘한다. 1000개의 파일 이름 혹은 내용을 한 번에 바꿔야 하는 등의 작업을 해야 할 때, 이걸 하나하나 손으로 다 바꿀 것도 없이 이 둘을 이용해서 한 큐에 순식간에 처리할 수 있다.[2] 메세지 방식이라든가 callback 등 알아야 할 게 많으며 이게 전혀 간단하지 않은데다, 간단한 작업만 하는 걸 짜더라도 코드가 상당히 길어진다. 당연한 얘기겠지만, 결과물이 간편하고 직관적일수록 그 결과물을 만들기 위해 투여되는 비용은 늘어나기 마련이다.[3] 대표적으로 Z shell(+oh-my-zsh)을 쓰는 사람들이 이런 걸 많이 한다.[4] 우분투부터 시작해서, 서버용으로 많이 쓰는 CentOS도 GUI를 올릴 수 있다.[5] 사실 배포판이 뭐가 됐든 간에 원하는 GUI 환경(GNOME, KDE, Unity 등)을 얼마든지 설치해서 사용할 수 있다.

분류