{{위키데이터 속성 추적}}
[[파일:bash screenshot.png|섬네일|300px|[[배시]] 세션의 스크린샷 - [[젠투 리눅스]]에서]]

'''명령줄 인터페이스'''({{llang|en|command-line interface}}, '''CLI''', '''커맨드 라인 인터페이스''') 또는 '''명령행 인터페이스''', '''명령어 인터페이스'''는 [[단말 에뮬레이터|가상 터미널]] 또는 [[텍스트 터미널|터미널]]을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 [[컴퓨터 키보드]] 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.

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

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

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

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

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

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

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

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

== 같이 보기 ==
* [[명령어 (컴퓨팅)|명령어]]
* [[그래픽 사용자 인터페이스]](GUI)
* [[텍스트 사용자 인터페이스]]
* [[윈도우 파워셸|마이크로소프트 파워셸]](MSH)
* [[Bash]] ([[리눅스]]의 기본 셸)

== 외부 링크 ==
{{위키공용분류|Command shells}}
* {{언어링크|en}} [https://web.archive.org/web/20060925012254/http://www.linux-command.com/ Linux Command Line] — 유닉스 셸 명령어 모음.
* {{언어링크|en}} [https://web.archive.org/web/20060827094132/http://www.developer.com/net/net/article.php/3286851 ''Coming Soon to Windows: The Microsoft Shell (MSH)'' by Jason Nadal] - 마이크로소프트 파워셸에 대한 설명.
* {{언어링크|en}} [https://web.archive.org/web/20060831134343/http://getpot.sourceforge.net/ "GetPot. 객체 지향 명령줄 파싱."] C++, Python, Java, Ruby 등에서 사용 가능한 라이브러리.

{{운영 체제}}
{{전거 통제}}

[[분류:컴퓨팅 명령어| ]]
[[분류:소프트웨어 구조]]
[[분류:사용자 인터페이스 기술]]
[[분류:사용자 인터페이스]]