명령줄 인터페이스

명령줄 인터페이스(, CLI, 커맨드 라인 인터페이스) 또는 명령행 인터페이스, 명령어 인터페이스는 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.

역사 
전신 인자기(TTY) 머신을 통해 인간이 원격으로 정보를 교환하였고 일반적으로 한 번에 텍스트 한 줄을 보냈는데, 명령줄 인터페이스는 이렇게 인간이 수행한 다이얼로그의 한 형태에서 발전하였다. 즉각적인 상호 작용과 피드백을 할 수 있었기 때문에 천공 카드에 비해 진보한 방식으로 여겨졌다. 초기 컴퓨터 시스템들은 종종 인간 운영자와 상호 작용을 하기 위한 수단으로 전신 인자기를 사용하였다.

명령줄 인터페이스는 프로그래머, (특히 유닉스 기반 운영 체제의) 시스템 관리자, 공학 및 과학 분야 종사자, 일부 고급 개인 사용자들이 주로 사용하고 있다. 시각 장애를 가진 일부 사용자들도 명령줄 인터페이스를 사용한다.

초기 마이크로컴퓨터 자체는 CP/M, MS-DOS, 애플소프트 베이직과 같은 명령줄 인터페이스 기반이었다. 1980년대부터 1990년대까지(특히 애플 매킨토시와 마이크로소프트 윈도우의 도입 이후) 명령줄 인터페이스는 대중적으로 사용되는 그래픽 사용자 인터페이스로 대체되었다. 명령줄은 현재도 사용되지만 시스템 관리자와 기타 시스템 관리, 컴퓨터 프로그래밍, 배치 처리를 맡은 고급 사용자들이 주로 사용한다.

개요 
가장 간단한 형태의 명령줄 인터페이스는 명령 프롬프트를 표시해 사용자의 명령어 입력을 기다리며, 사용자의 명령어 입력이 완료(보통 엔터키를 누름)되면 해당 명령어를 실행하고, 결과를 문자열 형태로 출력한다.

그래픽 사용자 인터페이스의 단추 또는 메뉴와는 달리, 명령줄은 그 자체로 사용자가 원하는 작업을 정확히 표현할 수 있다. 또한, 명령줄은 다른 결과를 원할 경우 바꿔서 사용할 수 있는 기본값들을 포함하고 있다. 명령줄은 개별 명령 또는 여러 개의 명령을 순차적으로 묶어서 추후에 사용할 수 있도록 특정 문자 열이나 별명에 지정할 수 있다.

이 같은 인터페이스를 제공하는 프로그램을 명령줄 해석기 또는 셸이라고 부른다. 이를테면 유닉스 셸(sh, ksh, csh, tcsh, bash 등)과 CP/M, 도스의 command.com("명령 프롬프트") 등이 있다. 이 중 CP/M과 command.com은 DEC사의 RSX와 RSTS를 기반으로 하고 있다. 2006년 후반에 마이크로소프트는 전통적인 유닉스 셸과 자사의 객체 지향적 .NET 프레임워크의 기능을 조합한 윈도우 파워셸(개발명 "모나드 Monad")을 출시했다. 윈도에서 현재 쓰이는 명령줄 인터페이스 프로그램인 도스와 윈도우 스크립트 호스트는 일반적으로 그 기능이 충분치 않거나 불안정하다고 여겨지고 있다. 윈도에서 유닉스 명령줄 인터페이스를 사용할 수 있는 소프트웨어에는 MinGW 등이 있다.

오토캐드와 같은 일부의 프로그램들은 명령줄 인터페이스와 그래픽 사용자 인터페이스를 동시에 지원하기도 한다. 공학/과학 수치 계산 패키지인 매틀랩은 일부 계산 작업에 대해 그래픽 사용자 인터페이스를 제공하지 않지만, 명령줄 인터페이스를 사용하면 모든 계산 작업을 수행할 수 있다.

명령줄 인터페이스에서 사용되는 명령어는 보통 다음과 같은 구조로 되어 있다.
[할 일] [작업 방법] [대상 파일들]
또는
[할 일] [작업 방법] < [입력 파일] > [출력 파일]
"할 일"은 작업의 큰 목적을 제시하며 "작업 방법"은 작업을 수행하는 세부 방법을 지정한다. "대상 파일들"은 작업을 수행할 대상 파일들을 지정한다. 두 번째 형태에서 '>' 및 '<'(꺾은 괄호), '|'(세로 막대)는 리디렉션 문자로, 입출력을 화면이 아닌 다른 장비(명령 문자열이 기록된 파일, 모뎀, 프린터 등)를 통해 수행할 것을 지정하거나 입출력을 연결시키는 역할을 한다.

같이 보기 
 명령어
 그래픽 사용자 인터페이스(GUI)
 텍스트 사용자 인터페이스
 마이크로소프트 파워셸(MSH)
 Bash (리눅스의 기본 셸)

외부 링크 

  Linux Command Line — 유닉스 셸 명령어 모음.
  Coming Soon to Windows: The Microsoft Shell (MSH) by Jason Nadal - 마이크로소프트 파워셸에 대한 설명.
  "GetPot. 객체 지향 명령줄 파싱." C++, Python, Java, Ruby 등에서 사용 가능한 라이브러리.

 
소프트웨어 구조
사용자 인터페이스 기술
사용자 인터페이스