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