CLI

 


[image]
대표적인 CLI 환경 Bash
1. 개요
2. 관련 문서


1. 개요


명령줄 인터페이스(CLI)는 Command-Line Interface 또는 Character User Interface이다. TUI와는 조금 다른 개념이다. 가장 대표적인 예시로는 도스, 명령 프롬프트, bash로 대표되는 유닉스 셸 환경이 있다.
일반적으로 CLI 환경은 불친절한 환경으로 여겨진다. CLI 환경에 익숙해지려면 기본적인 명령어들을 외워야 하는 것부터 난관인데, 깊게 들어갈수록 프로그래밍과 관련 있는 파이프 및 셸 스크립트까지 내려가기 때문에 배워야 할 게 끝이 없다. 당연히 대부분의 사람들은 키보드 및 마우스를 통하여 접근하는 직관적인 GUI를 선호할 수밖에 없다. 이 때문에 CLI는 최종 사용자 수준에서는 GUI로 완전히 대체되었으며, 아직까지 CLI가 남아있는 분야는 서버 관리 및 서버 프로그래밍처럼 프로그래밍과 접점이 닿아있는 부분이다.
불편하기만 해 보이는 CLI가 아직까지 남아있는 이유는 GUI가 대체할 수 없는 CLI만의 장점 때문이다. 일단 만지는 사람이 최종 사용자가 아닌 충분히 교육된 사람이기에 진입장벽이 크게 문제가 되지 않으며, 자원을 적게 잡아 먹으면서 안정적이고 빠르다. 게다가 원격으로 작업할 때 웬만한 네트워크 환경에서도 안정적으로 작업할 수 있으며 사용되는 데이터 양 역시 압도적으로 적다. 특히 서버 쪽에서는 작업 자동화[1]와 원격 작업이 필요한 경우가 많은데 CLI는 이 분야에서 압도적인 효율을 보여준다.
주로 리눅스 커뮤니티 쪽이 이런 CLI 환경에 익숙한 편이다. 이런 사람들은 GUI 윈도우 매니저 위에 '터미널 에뮬레이터'를 이용하여 CLI를 부분적으로 통합시켜서 쓴다. 윈도에서 cmd나 COMMAND.COM을 띄워 놓고 사용한다고 생각 하면 된다. 물론 차이는 엄청나다. 안 좋다는 의미가 아니고 심지어 더 좋은 경우가 많다. 특수 글꼴과 다양한 색상을 적용시켜 터미널을 알록달록하게, 그리고 가독성 좋게 만들 수 있다.[2] 특히 macOS에서 돌아가는 iTerm2는 이 분야의 최강자.
프로그래밍 교육의 경우 말할 것도 없는데, 당장 프로그래밍 첫 예제가 무엇인지 생각하면 간단할 것이다. 우선, GUI 프로그래밍에 비해 사전지식이 매우 적게 요구되며[3], 실제로 프로그래밍을 할 때 가장 많이 다루는 데이터셋이 문자열이기도 한데다가, 문자열만 가지고도 거의 모든 종류의 알고리즘 연습은 다 가능하기 때문에 CLI부터 시작하는 것.
개인이 직접 홈페이지블로그, 소규모 쇼핑몰 등을 만들어 운영할 때도 보게 된다. 웹 호스팅 서버에 홈페이지나 블로그 소스 파일 관리를 위해 SSH로 접속하면 이미지 없이 글자만 주르륵 뜨는 화면이 뜨는데, 그게 바로 CLI 중 하나인 리눅스 터미널 환경이다. 물론 웹 호스팅 업체도 개인 홈페이지나 블로그, 쇼핑몰 운영을 위해 개인이 CLI 환경을 배우는 건 어렵다는 것을 알고 있기에 최대한 CLI를 만나지 않도록 서비스를 구성한다. 그러나 조금 파고들다 보면 어쩔 수 없이 CLI를 만나게 되는 것이 현실. 이게 싫으면 윈도우 웹 호스팅을 받으면 되지만 윈도우는 무료가 아니라 호스팅 비용도 비싸다(...). 물론 리눅스도 GUI를 지원하는 배포판이 있기는 하지만[4][5] CLI 환경에 비해서 성능 상으로 비효율적인 것은 어쩔 수 없다.
그 외에도 분야에 따라 활용도가 미친 듯이 올라가기도 한다. 의외로 물리학자들이 많이 쓰는데, 특히 입자물리 계열을 하는 사람들은 대부분 이 환경에서 작업을 한다. 대부분의 입자물리 용 프로그램들이 리눅스 환경에서 돌아가기 때문에 그렇다. 물론 이런 경우 흔히 vim 혹은 Emacs를 같이 쓰기 때문에 TUI도 같이 쓴다고 해야 정확하겠지만. 아무튼, 이 분야 사람들은 사실 상의 강요(?!)로 이 환경에 친숙해진 상황이며, 간혹 자신이 물리학자인지 프로그래머 인지 혼란스럽다는 입자물리학자들의 성토도 있곤 한다.(...)
뭔가 알아볼수 없는 글자들이 내려오면서 실행되는 모습이 신기한지, 미디어에서는 해커나 컴퓨터 계열 천재속성의 캐릭터가 자주 사용한다. 그래서 이런 것도 나왔다. 그리고 유독 바탕색은 검정색으로 하는 경우가 많다. 사용자들 중엔 가독성 때문에 흰 바탕을 쓰는 경우도 많다. 물론 검은 바탕이 휘도가 낮아 눈의 피로가 덜하다는 이유로 검거나 어두운 색 바탕을 쓰는 사람 역시 많아 다 취향따라 제각각이긴 하지만. 다만 어두운 곳에서 사용하는 경우 다크 모드가 눈에 훨씬 좋지만, 밝은 환경에서 사용할 경우에는 오히려 다크 모드가 독이 된다는 점을 명심하자.

2. 관련 문서



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

분류