CLI

텍스트 기반 인터페이스에 대해서는 TUI 문서를 참조하십시오.


대표적인 CLI 환경 bash

1 개요

명령어 기반 인터페이스(Character User Interface), Command-line User Interface 또는 CLI(Command-Line Interface).TUI와 헷갈리지 말자.

사람들에게 친숙한 예로는 도스가 있다. 거의 DOS가 CLI의 대명사급[1] 현재 많이 쓰이는 환경은 bash로 대표되는 유닉스 쉘 환경. CLI는 명령어 및 인자들을 입력하여 컴퓨터를 작동시키는 방식인데, 현재 엔드유저용으로는 직관적인 GUI에 밀려 거의 쓰이지 않는다. 하지만 반대로 익숙해진다면 같은일도 더 빨리 처리할 수 있다. 그리고 아무런 이유없이 작업 하나를 할때마다 ls를 치는 자신을 볼 수 있다.

일반적으로 CLI 환경은 초보자에게 불친절한 환경으로 여겨진다. CLI환경에 익숙해지려면 기본적인 명령어들을 외워야 하는 것부터 난관인데, 깊게 들어갈수록 프로그래밍과 관련있는 파이프 및 쉘 스크립트까지 내려가기 때문에 진입장벽이 높은 인터페이스이라고 할 수 있다. 당연히 아무것도 모른채로 컴퓨터를 운용하고 싶어하는 유저들은 키보드 및 마우스를 통하여 접근하는 직관적인 GUI를 선호할 수 밖에 없다. 따라서 많은 사람들에게 검은 바탕에 흰 글씨의 터미널을 가져다 주면 당황하기 마련이고, OS가 깨져서 복구모드를 들어갔는데 CLI밖에 안뜨면 대부분 패닉하기 마련이다.

현재 CLI가 많이 쓰이는 경우는 사실상 서버나 프로그래밍과 접점이 닿아있는 부분이다. 즉, 서버 관리 및 서버 프로그래밍, 그리고 프로그래머 기초 교육용.

서버의 경우 일단 만지는 사람이 엔드유저가 아닌 충분히 교육된 사람이기에 진입장벽정도는 넘을 수 있고, CLI는 자원을 적게 잡아 먹으면서 고유의 안정성이 있다는 장점이 있다.[2] 게다가 CLI가 익숙해지면 GUI보다 편하다고 여기는 사람도 많다. 서버 쪽에서는 작업 자동화가 필요한 경우가 많은데 파이프와 쉘 스크립트를 이용하는 CLI가 압도적인 효율을 보여준다.

사실 CLI 와 GUI 는 서로 완전히 충돌한다기보다 각각 장단점이 존재하는 인터페이스라 보는것이 맞을것이다. GUI 는 간단한 명령은 엄청나게 쉽게 내릴 수 있게 해주지만, 선택지가 많고 명령이 복잡해지면 옵션폭탄이 등장한다던가, 그냥 GUI 의 탈을 쓴 CLI 가 된다던가 하면서 그 한계를 드러내게 된다. 반면, CLI 는 간단한 명령이건 복잡한 명령이건 인터페이스 측면에서 큰 차이는 없다. 게다가 어느 정도의 반복 작업이 필요한 명령들의 경우, 보통 그런 걸 제공해주지 않는 GUI 환경에서는 극심한 노가다가 되버리거나 딱 원하는 그 기능을 제공해주는 프로그램을 찾아헤매야 하는데, CLI 는 보통 그 자체로 하나의 프로그래밍 환경이라 간단히 처리할 수 있는 경우가 많다.

요즘 컴퓨터 성능으로는 자동 완성 속도도 즉시라 해도 좋을 정도로 빨라졌고, 거기다가 커맨드 히스토리 검색이나 alias 기타등등을 활용하는 것에 익숙하다는 전제 하에 GUI 가 강점을 갖는 저 쉬운 명령 기준으로도 CLI가 그리 딸리는 환경은 아니다.

주로 리눅스 커뮤니티 쪽이 이런 CLI 환경에 익숙한 편이다. 이런 사람들은 GUI 윈도우 매니저 위에 '터미널 에뮬레이터'를 이용하여 CLI를 부분적으로 통합시켜서 쓴다. [3]

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

뭔가 알아볼수 없는 글자들이 내려오면서 실행되는 모습이 신기한지, 미디어에서는 해커나 컴퓨터 계열 천재속성의 캐릭터가 자주 사용한다. 그리고 유독 멋지다고 생각하는지 바탕색은 검정색으로 하는 경우가 많다.사실은 리눅스 민트 제외하고 대부분 검은색이 기본 설정이라 그냥 써서 그렇다. 사실 실제 사용자들은 가독성 때문에 흰 바탕을 쓰는 경우가 적지 않다. 물론 이것도 다 취향따라 제각각이긴 하지만(...)

2 관련 항목

  1. 일례로 리눅스 터미널을 켜놓고 작업하면 관련이 없는 사람이 보이는 반응은 도스 켜놓고 뭐하냐는 질문(..)
  2. 하드웨어의 발달에 따라 GUI 또한 사용할 수 있다. 다만 GUI의 장점을 살릴 수 있는 경우가 많이 없는편이다. 보안 측면에서 볼 경우, 사용하는 모든 프로그램이 결국 약점이 될 가능성이 있기 때문에 돌아가는 프로세스 수를 최대한 줄이는 것이 기본이다. 서버로 많이 쓰이는 리눅스 계열에서는 이 환경을 이라고 부른다.
  3. 윈도에서 cmd나 COMMAND.COM을 띄워 놓고 사용한다고 생각 하면 된다. 물론 차이는 엄청나다.
  4. 물론 액션스크립트 등의 예외도 있다. 액션스크립트만으로 출력 하나 하려면 빡친다(...)