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