터미널, 콘솔, 셸 및 명령 줄의 차이점은 무엇입니까?


211

터미널, 콘솔, 셸 및 명령 줄의 차이점은 무엇입니까?


1
(1/2) 쿨 요원은 대부분 정확하지만 그가 제공하는 콘솔의 정의는이 주제에서 구식입니다. 당신이 그것을 따르는 경우 그의 링크는 올바른 정보를 가지고 있습니다. 그의 링크에서 전체 정의를 읽으십시오 . 콘솔은 느슨하게 사용되어 많은 유사한 것을 의미하지만, 가장 중요한 것은 일반적으로 키보드, 디스플레이 및 마우스와 같은 로컬 연결 인간 입력 및 출력 장치를 나타냅니다.
0xSheepdog

1
(2/2) 이것은 현명한 것처럼 보이지만 노련한 시스템 관리자 라면 그렇지 않다고 말할 것입니다 . 시스템에 문제가 있고 시스템이 완전히 다운 / 다운 / 오프라인 상태 인 경우 시스템 의 실제 콘솔 이 여전히 작동하지만 네트워크 연결이 끊어 졌는지 확인해야합니다. 이 작은 세부 사항은 데이터, 정보 처리 등을 저장하거나 비용을 절감 할 수 있습니다. Pedantic, 예. 그러나 중요합니다.
0xSheepdog

6
@ 0xSheepdog이 주석을 전체 답변 (다른 용어에 대한 정의 또는 설명 포함)으로 확장하여 게시 할 수도 있습니다. 질문에 여러 답변이있는 것은 나쁘지 않습니다 (아마도 동일한 정보를 동일한 방식으로 전달하는 경우는 제외). 기계를 로컬로 검사하는 중요한 관행이 실제로 실제 인간 인터페이스를 알고 / 호출하는 것에 의존하는 이유는 확실하지 않지만, 동료와의 효과적인 의사 소통 또는 문서 사용에 중요하다는 주장이있을 수 있습니다. (답변에서 분명히 할 수 있습니다.)
Eliah Kagan

4
밀접한 관계 (모든 좋은 답변 참조)로 인해이 용어는 때때로 동의어로 사용되기 때문에 아마도이 질문을하게 될 것입니다.
Mark

답변:


143

짧은 답변:

  • 터미널 = 텍스트 입출력 환경
  • 콘솔 = 물리적 터미널
  • = 명령 줄 인터프리터

긴 대답 :

콘솔과 터미널은 밀접한 관련이 있습니다. 원래 그들은 유닉스 초기에 컴퓨터와 상호 작용할 수있는 장비를 의미했습니다. 이것은 타이프 라이터와 유사한 텔레 프린터 스타일의 장치로 , 텔레 타이프라이터 (teletypewriter)라고도하며, 속기는“tty”였습니다. “터미널”이라는 이름은 전자적 관점에서,“콘솔”이라는 이름은 가구 관점에서 나왔습니다. 유닉스 역사 초기에 전자 키보드와 디스플레이가 터미널의 표준이되었습니다.

단말기

유닉스 용어에서, 터미널 은 읽기 및 쓰기 이외 의 많은 추가 명령 ( ioctls ) 을 구현하는 특정 종류의 장치 파일 입니다 . 일부 터미널은 하드웨어 장치를 대신하여 커널에 의해 제공됩니다. 예를 들어 키보드에서 입력을 받고 텍스트 모드 화면으로 출력을 보내거나 입력 및 출력을 직렬 회선을 통해 전송합니다. pseudo-terminals 또는 pseudo-ttys라고도하는 다른 터미널은 터미널 에뮬레이터 라는 프로그램에 의해 (씬 커널 계층을 통해) 제공됩니다 . 일부 유형의 터미널 에뮬레이터에는 다음이 포함됩니다.

  • X Window 시스템 에서 실행되는 GUI 응용 프로그램 : Xterm , Gnome Terminal, Konsole, Terminator 등
  • 프로그램과 다른 터미널 간의 격리 계층을 제공하는 Screentmux
  • 한 기계의 터미널을 다른 기계의 프로그램과 연결하는 Ssh
  • 스크립팅 터미널 상호 작용에 대한 기대

단어 터미널 은 또한 컴퓨터와 일반적으로 키보드 및 디스플레이와 상호 작용하는 장치의보다 전통적인 의미를 가질 수 있습니다. 예를 들어, X 터미널은 일종의 씬 클라이언트 (thin client)로 , 키보드, 디스플레이, 마우스 및 때로는 다른 인간 상호 작용 주변 장치를 구동하고 실제 응용 프로그램을보다 강력한 다른 컴퓨터에서 실행하는 특수 목적 컴퓨터입니다.

콘솔

콘솔은 일반적으로 어떤 정의하여 컴퓨터에 연결된 단말 기본 물리적 인 의미에서 단말이다. 콘솔은 운영 체제에 (커널 구현) 터미널로 나타납니다. Linux 및 FreeBSD와 같은 일부 시스템에서는 콘솔이 여러 터미널 (tty)로 표시됩니다 (특정 키 조합은 이러한 터미널간에 전환됩니다). 문제를 혼동하기 위해 각 특정 터미널에 부여 된 이름은 "콘솔", "가상 콘솔", "가상 터미널"및 기타 변형이 될 수 있습니다.

참조 왜 가상 터미널 "가상", 무엇을 / 왜 / "진짜"터미널입니까? .

커맨드 라인 [인터페이스]

명령 라인 및 프레스 - 사용자 유형 (어떤 파라미터 뒤에 일반적 명령 이름 문자 시퀀스로서 표현된다)이 명령은 인터페이스 Return해당 명령을 실행하는 키.

껍질

쉘은 그 주된 목적은 다른 프로그램을 시작하는 것입니다 그들은 로그인 할 때 사용자에게 표시되는 기본 인터페이스입니다. (원래의 은유가 쉘이 사용자의 홈 환경인지 또는 쉘이 다른 프로그램에서 실행되고 있는지 여부는 알 수 없습니다.)

유닉스 서클에서 명령 줄 을 전문으로 하며 시작하려는 응용 프로그램의 이름을 입력 한 다음 응용 프로그램이 작동 해야하는 파일 또는 기타 객체의 이름을 입력하고 Enter 키를 누릅니다. 다른 유형의 환경 (Gnome Shell을 제외하고 주목할만한 최근 환경)은 일반적으로“shell”이라는 단어를 사용하지 않습니다. 예를 들어, 창 시스템에는 "쉘"이 아닌 " 창 관리자 "및 " 데스크탑 환경 "이 포함됩니다.

유닉스 쉘에는 여러 가지가 있습니다. 우분투의 기본 쉘은 Bash입니다 (대부분의 다른 Linux 배포판과 마찬가지로). 인기있는 대안으로는 zsh (전원 및 사용자 지정 가능성을 강조)와 물고기 (단순성을 강조)가 있습니다.

명령 줄 셸에는 명령을 결합하기위한 흐름 제어 구문이 포함되어 있습니다. 대화식 프롬프트에서 명령을 입력하는 것 외에도 스크립트를 작성할 수 있습니다. 가장 일반적인 쉘에는 Bourne_shell 기반의 공통 구문이 있습니다 . “ 쉘 프로그래밍 ”을 논의 할 때 , 쉘은 거의 항상 Bourne 스타일 쉘로 암시됩니다. 스크립팅에 자주 사용되지만 고급 대화식 기능이없는 일부 쉘에는 Korn 쉘 (ksh) 및 많은 변형이 포함됩니다. 대부분의 유닉스 계열 시스템에는 /bin/sh일반적으로 ash, ksh 또는 bash 와 같은 Bourne 스타일 쉘이 설치되어 있습니다. 우분투에서 /bin/sh대시 (이 빠르다 배시보다 적은 메모리를 사용하기 때문에 선택), 물푸레 변종.

유닉스 시스템 관리에서, 사용자의 은 로그인 할 때 호출되는 프로그램입니다. 일반 사용자 계정에는 명령 줄 셸이 있지만 액세스가 제한된 사용자에게는 제한된 셸 이나 다른 특정 명령 (예 : 파일 전송)이있을 수 있습니다. 계정 만).


터미널과 쉘 사이의 분업은 완전히 분명하지 않습니다. 주요 작업은 다음과 같습니다.

  • 입력 : 터미널이 키를 제어 순서로 변환합니다 (예 : Left\e[D). 쉘은 제어 순서를 명령으로 변환합니다 (예 : \e[Dbackward-char).
  • 라인 버전, 입력 히스토리 및 완료는 쉘에서 제공합니다.
    • 터미널은 자체 라인 에디션, 히스토리 및 완료를 제공 할 수 있으며 실행 준비가 완료된 경우에만 쉘로 라인을 보낼 수 있습니다. 이런 식으로 작동하는 유일한 공통 터미널 M-x shell은 Emacs입니다.
  • 출력 : 쉘은 "디스플레이 foo", "포 그라운드 색상을 녹색으로 전환", "커서를 다음 행으로 이동"등과 같은 명령을 내 보냅니다. 터미널은이 명령에 따라 작동합니다.
  • 프롬프트는 순전히 쉘 개념입니다.
  • 쉘은 그것이 경로 재 지정되지 않는 한, 그것이 실행하는 명령의 출력을 보지 않습니다. 출력 기록 (스크롤 백)은 순전히 터미널 개념입니다.
  • 응용 프로그램 간 복사 붙여 넣기는 터미널에서 제공합니다 (보통 마우스 또는 Ctrl+ Shift+ V또는 Shift+ 와 같은 키 시퀀스를 사용하여 Insert). 셸에는 자체 내부 복사 붙여 넣기 메커니즘 (예 : Meta+ WCtrl+ Y)이있을 수 있습니다.
  • 백그라운드에서 프로그램을 시작하고 관리하는 작업 제어 는 대부분 쉘에서 수행됩니다. 그러나 Ctrl+ 와 같은 키 조합을 처리 C하여 포 그라운드 작업을 종료하고 Ctrl+ Z를 중단 하는 터미널입니다 .

유닉스와 리눅스 에서 재활용


1
터미널 장치 파일 및 / 또는 커널의 터미널 처리 코드 (tty ioctls, raw / cooked, basic line editing)에 대한 적절한 용어라는 말에 동의하지 않아야합니다. 터미널 = 이스케이프 코드를 처리하고 키 누르기를 문자로 바꾸고 화면에 그리거나 종이 / 테이프에 인쇄하는 것들. 자세한 내용은 내 답변을 참조하십시오.
Peter Cordes

2
@PeterCordes이 세부 수준에서는 구별이 없습니다. POSIX는 정의 단말기 에 동의어 단말 장치 디바이스 파일의 의미. 이것이 유닉스의 의미입니다. 이스케이프 코드를 처리하고 키 누르기를 문자로 변환하고 화면을 그리는 것 (또는 네트워크를 통해 전송하거나 파일에 로그하는 것)보다 더 중요한 일입니다.
Gilles

2
흠, 터미널도 그런 의미로 사용됩니다. 커널이 처리하는 터미널 장치의 한쪽 끝에 터미널 에뮬레이터 또는 터미널 장치가 연결된 직렬 포트가 있다고 가정합니다. 커널 tty 처리 (쿡 모드)는 몇 가지 제어 코드 (^ c의 신호, ^ u / ^? (삭제)의 행 편집) 만 처리합니다 .tty 코드와 Linux의 일부 사이에 선을 그리려고합니다. VT100과 같은 터미널을 그래픽 카드와 USB / ps2 / AT 키보드에 구현 한 것없이 리눅스를 컴파일 할 수 있지만 tty 없이는 컴파일 할 수 있습니다
Peter Cordes

3
@PeterCordes 커널 설정에서 터미널에 대한 지원은 생략 될 수 있습니다 (메모리가 매우 타이트한 일부 드문 임베디드 시스템에 유용합니다). 에 의해 제어됩니다 CONFIG_TTY. 터미널 에뮬레이터에 대한 지원 (보다 적절하게 의사 터미널이라고도 함- "터미널 에뮬레이터"에는 항상 telnetd, screen, expect 등이 포함되지 않습니다.)이에 의해 제어됩니다 CONFIG_UNIX98_PTYS. PC 텍스트 모드 디스플레이 및 키보드 등에 대한 지원은에 의해 제어됩니다 CONFIG_VT. drivers/tty/Kconfig커널 소스를 참조하십시오 .
Gilles

2
죄송합니다. 최근에 커널 소스를 가지고 있지 않았습니다. CONFIG_TTY는 2012 년에만 추가되었습니다. 어쨌든, 퍼즐의 다른 부분이 무엇인지, 그리고 서로 어떻게 어울리는지를 머리로 감싸는 데 도움이 되길 바랍니다.
Peter Cordes

60

시각적 표현.

단말기

당신이 앉아서 보스처럼 일할 수있는 것.

단말기

콘솔

많은 일을하는 하드웨어.

콘솔

콘솔의 또 다른 예는 Super Nintendo [Actraiser를 재생할 수있는]와 같은 비디오 게임 콘솔입니다.

껍질

기본적으로 명령을 실행하기위한 응용 프로그램입니다.

껍질껍질

커맨드 라인 [인터페이스]

기본적으로 명령을 입력 한 모든 것.

CLICLI


8
당신은 내 아이디어를 훔쳤다-나는 기본적으로 같은 대답을하려고했다. 그래서 당신은 공감대를 가질 수 있습니다. 요즘이 용어는 대부분 동의어이지만 "터미널"및 "콘솔"과 같은 용어는 오래된 컴퓨팅 개념에서 유래되었습니다.
thomasrutter

2
좋은 노력. 간단하고 쉬운
Umar Mukthar

19

로부터 리눅스 정보 프로젝트 :

터미널 : 기술적으로 터미널 에뮬레이터라고도하는 터미널 창은 콘솔을 에뮬레이트하는 GUI (Graphical User Interface)의 텍스트 전용 창입니다.

우리는 사용자의 콘솔에 액세스 할 수있는 GUI 응용 프로그램입니다.

콘솔 : 컴퓨터의 컨트롤을 포함하는 계기판

: 쉘은 리눅스 및 다른 유닉스 계열 운영 체제를위한 전통적인 텍스트 전용 사용자 인터페이스를 제공하는 프로그램입니다

명령 줄 : 명령 줄은 사용자가 명령 및 데이터를 입력하는 컴퓨터 모니터 (일반적으로 CRT 또는 LCD 패널)의 모든 텍스트 표시 모드에서 명령 프롬프트의 오른쪽 공간입니다.


5
"터미널"은 실제 텍스트 전용 화면을 나타냅니다. 당신이 말하는 것은 실제로 "터미널 에뮬레이터"입니다.
등록 된 사용자

2
@RegisteredUser 터미널 에뮬레이터는 일종의 터미널입니다. 단어 터미널 은 물리적 터미널로 제한되지 않습니다 (일반적인 단어는 console ).
Gilles

2
명령 줄 정의 가 잘못되었습니다. 명령 행은 전체 텍스트 표시 모드로 제한되지 않습니다.
Gilles

1
@Gilles 하나의 웹 링크에서 가져 왔습니다. 당신은 정답을 잘 언급했습니다.
rɑːdʒɑ

5
@AgentCool 복사하여 붙여 넣는 능력에 의문의 여지가 없습니다. 나는 당신의 소스 선택에 의문을 제기합니다. 글을 올렸는지 여부에 관계없이 귀하가 게시하는 것은 귀하의 책임입니다.
Gilles

15

여기에 대한 답변은 매우 좋습니다. 그러나 그들은 너무 건조하고 내 취향에 기술적이기 때문에 테이크를 줄 것입니다.

터미널 은 무언가의 끝입니다. 예를 들어 어떤 도시에서 지하철을 타면 내리는 역이 터미널입니다. 또는 공항에서 사람들이 목적지 국가에 도착했을 때 나오는 장소는 터미널로 간주됩니다. 공항의 터미널이 오늘날 사람들을 기내에 싣는 장소와 비행기에서 내리는 장소는 명백한 경제적 인 이유 때문입니다.

컴퓨터의 목적은 데이터를 가져 와서 무언가를하고 결과를 내뿜는 것입니다. 따라서 터미널은 계산 결과를 얻을 수있는 모든 장치입니다 (예 : 화면). 첫 번째 컴퓨터에서 일반적으로 입력 (키보드) 및 출력 (화면)을 단일 장치로 사용했습니다. 그로 인해 오늘날 터미널은 모든 입력 / 출력 장치로 간주됩니다. 마우스, 키보드, 스크린, 카메라, 모두 터미널입니다.

은 OS입니다. 컴퓨터에는 커널이 있으며 우분투에는 Linux 부분이 있습니다. 커널이 실제로 저수준이기 때문에 사용자가 커널과 쉽게 상호 작용할 수있게 해주는 쉘이 제공됩니다. 그것이 BASH의 예입니다.

콘솔 은 (사전에서)

기계, 전기 장비 등의 제어 장치가 포함 된 평평한 표면

이것이 음악 산업에서 모든 노브가 달린 보드 또는 커맨드 테이블의 우주 왕복선에서 모두 콘솔로 간주되는 이유입니다. Super Nintendo와 PS2는 역사적으로 처음으로 이러한 엔터테인먼트 장치가 버튼이 많은 상자처럼 보였기 때문에 콘솔이라고 불립니다.

명령 행 은 GUI와는 반대로 인터페이스 일뿐입니다. 즉, 컴퓨터에는 두 가지 유형의 인터페이스가 있습니다. CLI (명령 줄 인터페이스) 및 GUI (그래픽 사용자 인터페이스) 가장 큰 차이점은 첫 번째 키보드는 키보드에서 입력되고 두 번째 키보드는 마우스에서 입력됩니다.


1
"GUI의 반대"는 무엇을 의미합니까?
Koray Tugay 2016 년

2
반대로 나는 CLI 또는 GUI가 있음을 의미합니다. 나는 대답에서 조금 더 분명히 설명했다.
Pithikos 2016 년

12

내 대답을 요약하려면 :

은 리눅스에서 bash 처럼 processes명령과 returns출력을 하는 프로그램이다 .

단말 프로그램이다 쉘은 , 과거에이 있었다 물리적 장치 (단말기 키보드가 모니터되기 전에 그들이 있었다 텔레타이프 ), 그리고, 그 개념에 옮겼다 소프트웨어 같은 그놈 터미널 .run

그래서 Gnome-Terminal을 열면 을 실행하는 검은 창이 나타나 명령을 실행할 수 있습니다.

콘솔은 특별한 종류의 터미널 이며 물리적 장치이기도합니다. 예를 들어 리눅스 virtual console에서는 Ctrl+ Alt+의 조합으로 액세스 할 수 있습니다 F1 to F7.

콘솔은 때때로이 컴퓨터에 물리적으로 연결된 키보드와 모니터를 의미 합니다.


11

이러한 용어는 종종 함께 사용되므로 사람들은 용어 중 하나를 사용하여 컬렉션을 나타냅니다. (즉, 문맥 상으로는 명령 행 쉘에 인터페이스를 제공하는 터미널 창을 의미한다는 것이 명백합니다).

이것을 막기 위해 xTerm을 XTerm / Gnome Terminal / Konsole / mrxvt / etc /의 스탠드 인이라고 말하겠습니다. bash와 동일합니다.

콘솔 에는 여러 가지 다른 의미가 있으므로 지금은 제외하십시오.

터미널 : ASCII / UTF8 / 기타 문자의 양방향 스트림 (일반적으로 VT100 또는 이와 유사한 이스케이프 코드 처리)을 통해 프로그램과 인간의 상호 작용을 제공하는 것. (예 : 백 스페이스, 삭제, 화살표 키 등은 이스케이프 코드를 생성합니다. 프로그램은 이스케이프 코드를 인쇄하여 커서를 터미널 화면 주위로 이동하거나 굵은 텍스트로 전환하거나 색상을 바꾸거나 화면을 지우거나 스크롤 할 수 있습니다.) 옛날에는 종종 화면과 키보드, 직렬 포트가있는 전용 장치였습니다. 자, 보통 xterm과 같은 프로그램입니다.

프로그램이 터미널에서 읽고 쓸 수있는 장치 파일이 있으며 가상 터미널도 다른 쪽이 장치 파일로 액세스 할 수 있습니다. 여기서 xterm은 bash가 입력을 읽을 수 있도록 입력을 작성합니다.

가상 터미널을 포함한 모든 터미널은 쿡 모드 (원시 모드가 아닌)에있을 때 기본적인 라인 편집 기능을 제공합니다. 이것은 커널 코드에 의해 처리됩니다. 화살표 키로 수행 할 수있는 줄 편집 기능을 제공하는 bash입니다. ( cat커널이 제공하는 기본 라인 편집이 어떤지 보려면 실행 하고 입력 해보십시오 . 백 스페이스가 작동하고 stty 설정에 따라 몇 가지 다른 것들이 있습니다.)

터미널 장치 뒤에는 많은 커널 코드가 있지만 터미널 자체가 아니라 터미널 처리 코드라고합니다.

편집 : Gilles는 tty를 터미널로 사용하는 것이 적절하다는 것을 확신했습니다. 터미널 에뮬레이터와 터미널에 연결되어 실행되는 대화식 프로그램은 모두 커널이 구현 한 터미널 의미에 따라 다릅니다. (이 동작의 대부분은 POSIX에 의해 표준화되며 Linux / * BSD / other Unix에서도 동일합니다.) 전체 화면 텍스트 편집기는 Unix tty 기능과 커서 이동 이스케이프 코드 처리, 그리고 터미널 에뮬레이터의 다른 많은 기능들.

그러나 화면, 키보드 및 직렬 포트가있는 실제 VT100은 터미널의 인스턴스입니다. 직렬 포트의 다른 쪽 끝에서 유닉스 커널이 필요하지 않습니다. 완전히 다른 것은 이스케이프 코드와 ASCII 텍스트를 보내고 동일한 것을받을 수 있습니다. 그러나 유닉스 터미널이 아닌 VT100 일 것입니다. 터미널 에뮬레이터와 Unix tty 시맨틱은 bash와 같은 프로그램이 정상적으로 실행되는 Unix 터미널의 전체 패키지를 구성합니다.

명령 줄 은 사용자 인터페이스의 일종으로 사용자가 무언가를 입력 한 다음 return 키를 눌러 무언가를 수행합니다. 또한 bash 또는 MS-DOS와 같은 명령 줄 셸의 약자로도 사용되지만 fdisk와 같은 "명령 줄 도구"라고 말할 수도 있습니다. UI에 터미널을 사용하는 프로그램 만 고려하면 두 가지 주요 제품군은 명령 줄과 전체 화면 텍스트 (예 : vi 또는 emacs -nw) 와 같은 텍스트 입니다.

일반적으로 터미널에서 실행되는 명령 줄 프로그램은 거의 항상 입력 및 출력이 파일로 리디렉션 된 상태로 작동하지만 편집기 나 전자 메일 클라이언트와 같은 터미널 기반 전체 화면 프로그램은 대화식 전용이므로 작동하지 않습니다.

쉘은 다른 프로그램을 시작하기위한 프로그램입니다. 유닉스 환경에서, 명령 행 쉘 (즉, Bourne 쉘 또는 C 쉘과 동등한 것)을 의미하는 것이 일반적입니다. 유닉스 쉘은 파일, 즉 쉘 스크립트에서 입력을 읽을 수도 있습니다. 그것들은 변수, 루프 및 조건을 가진 완전한 프로그래밍 언어이며 많은 프로그램은 bash로 작성됩니다 (또는 /bin/sh더 많은 이식성을 위해 POSIX 쉘 기능 만 사용 ). for i in *.something; do some_program "$i";done 대화식 쉘에서 빠르게 작성할 수도 있습니다 .

bash와 같은 쉘 (또는 쉘 명령을 실행하여 시작한 모든 프로그램)은 /dev/pts/Nxterm이 입력을 의사 터미널의 측면에 쓴 후 터미널 장치 에서 문자를 수신합니다 . 를 실행 cat한 다음을 누르면 ^c커널 tty 코드가 작동 하여 해당 터미널의 포 그라운드 프로세스로 ^c전송합니다 SIGINT. ( 터미널 사용법에 유의하십시오.이러한 맥락에서 터미널 에뮬레이터 또는 직렬 포트에 연결된 것이 아닌 유닉스 tty를 의미합니다.) 이것은 프로그램을 시작하기 전에 쉘이 터미널을 "요리"모드로 전환하기 때문에 발생합니다. 순서. tty 코드는 여전히 VT100 이스케이프 코드를 처리하는 것과는 관련이 없으며 몇 가지 낮은 ASCII 제어 코드 만 있습니다. xterm 대신 Linux 콘솔 텍스트 터미널을 사용하는 경우 커널은 VT100 에뮬레이션을 수행합니다. 그 모든 것을 처리합니다. Linux는 가상 콘솔 텍스트 터미널 지원없이 컴파일 할 수 있지만 tty 지원 없이는 컴파일 할 수 없습니다.

콘솔 은 때때로 터미널의 동의어로 사용되기도합니다 (KDE에는 Konsole이라는 터미널 에뮬레이터도 있습니다).

0xSheepdog이 지적했듯이 로컬로 연결된 인간 상호 작용 하드웨어라는 또 다른 의미가 있습니다.

커널 컨텍스트에서 콘솔은 또 다른 특정 의미를 갖습니다. 부팅 메시지가 작성되는 터미널입니다. 이것은 직렬 포트 일 수 있습니다. 일반적으로 그래픽 하드웨어 및 USB / ps2 / AT 키보드 용 드라이버 위에 커널이 구현 한 텍스트 콘솔입니다. console=tty0 console=ttyS0,115200n8명령 행에서 Linux를 부팅 하면 화면과 직렬 포트에 커널 메시지가 표시됩니다.

Linux는 가상 콘솔 ( N ) /dev/tty1을 구현 합니다. 당신은 당신의 실제 화면 / 키보드로 제어되는 하나 교체 할 수 있습니다 + + . 일반적인 Linux 배포판은 6을 작성 하고 모든 것을 시작 하므로 X11을 시작하거나 시작하지 않으려는 경우에도 6 번 로그인하여 명령, 매뉴얼 페이지 등을 수행 할 수 있습니다. 화면과 같은 프로그램을 실행합니다. Linux (커널)에는 가상 콘솔의 화면과 키보드를 통해 터미널 인터페이스를 제공하는 VT100 스타일 터미널 에뮬레이터가 포함되어 있습니다.CtrlAltFNgetty

로그인 프롬프트가있는 표준 6 개의 가상 터미널은 Ctrl+ Alt+ F7가 X11 세션으로 돌아가는 이유입니다 . X 서버는 사용 가능한 다음 가상 콘솔을 가져옵니다. (하지만 X /dev/input/...키를 누르지 않고 X 서버가 직접 열립니다 /dev/tty7.)

"텍스트 콘솔로 교체"는 Ctrl+ Alt+ 를 누르고 F1해당 터미널을 사용하는 것을 의미합니다 . 컴퓨터가 느리고 RAM이 많지 않았을 때, 일부 사람들은 텍스트 콘솔에서 많은 시간을 보냈습니다. 빠르기 때문에 멋진 글꼴을 설정하고 터미널 크기를 더 작은 문자로 변경할 수는 있지만 한 번에 화면에 더. 이전 및 다음 콘솔로 Alt+ LeftAlt+ Right스왑 (X11은 물론 콘솔에서 이것을 비활성화합니다 . Ctrl+ Alt+ 콤보 만 남겨 둡니다 .)FN

따라서 콘솔 은 이러한 용어 중 단 하나의 잘 정의 된 기술적 의미가없는 유일한 용어입니다. 몇 가지 다른 것이 있습니다. (터미널 적절한 대 터미널 플러스 tty 처리에 대한 느낌에 따라 터미널에도 여러 의미가 있다고 말할 수 있습니다.)


2
"주요"물리적 터미널을 의미하는 콘솔 은 커널 컨텍스트에만있는 것이 아닙니다. 의 동일한 의미 입니다 /dev/console. 콘솔 은 특별히 모호하지는 않습니다. 때로는 더 일반적인 터미널 의미로 사용 되기는하지만 터미널을 콘솔을 의미하는 데 사용하는 것보다 드문 경우 입니다.
Gilles

1
맞아 맞아 에코 foo | sudo tee / dev / console> / dev / null은 현재 VT가 텍스트 모드 (문자 그대로 VGA 텍스트 모드가 아닌 프레임 버퍼 콘솔 포함)에있는 경우 화면에 인쇄됩니다. 시리얼 포트에서 콘솔로 부팅했다면 콘솔로 갈 것입니다. 커널이 시스템 콘솔로 취급하는 모든 것에 대해 / dev / console에 장치 파일이라고 말할 수 있습니다. 시스템의 다른 어떤 것도 콘솔 tty가 전혀 없다는 개념을 가질 필요가 없습니다 (시스템이 다중 사용자 모드로 부팅하지 못하는 경우 콘솔 TTY에서 쉘을 시작하는 부팅 복구 항목 제외)
Peter Cordes

1
xorg X 서버 (문자열 / usr / bin / Xorg)는 / dev / console을 사용하여 하드웨어 액세스를 얻지 않습니다. / dev / tty0, / dev / tty % d 및 / dev / vc / % d를 사용하여 자체 VT에 설정합니다. 나는 Xorg가 시리얼 포트에서 커널 콘솔로 부팅 한 PC에서 여전히 잘 동작 할 것이라고 확신한다. 그리고 텍스트 모드 가상 터미널은 여전히 ​​작동합니다. 이것을 더 많이 고려할수록 부팅시 선택된 특수 터미널로 커널 컨텍스트에서 콘솔을 보는 데 더 기울고 있습니다. (원하는 경우 리눅스는 실제로 여러 터미널에서 콘솔 메시지를 한번에 출력 할 수있다.)
Peter Cordes

6

컴퓨터를 공유하는 초기 시절에 모든 사용자는 터미널을 가지고 있었지만 (단 하나를 얻을 수있을 때!) 시스템 운영자 만 콘솔을 가지고 있다고 생각합니다. 콘솔은 시스템 재부팅 또는 사용자 터미널에서 불가능했던 시스템 진단과 같은 작업에 사용될 수 있습니다. 콘솔은 컴퓨터의 본질적인 부분 인 기계실에 있었고 터미널은 원격 일 수있었습니다. 콘솔에는 텍스트 입력 및 출력뿐만 아니라 하드웨어 표시 등 및 스위치도 포함됩니다.

커맨드 라인은 사용자가 커맨드를 입력 할 수있는 영역이고 쉘은 해당 커맨드를 해석 / 준수하는 프로그램입니다. "쉘 (shell)"이라는 용어는 유닉스 파생물에 매우 특별하다. "명령 줄"은 Windows / DOS 전통에 더 가깝습니다. 메인 프레임에 해당하는 것을 보통 "작업 제어 언어"라고합니다.

분명히 이러한 원래의 차이점은 기술이 변화함에 따라 시간이 지남에 따라 흐려졌습니다.


3

사용자 중심의 짧은 답변을 시도하십시오.

명령 행 - 명령 을 입력 한 행. 일반적으로 운영 체제에서 제공하는 텍스트 모드 창 (명령 줄 인터페이스)에서 무언가를 실행해야한다고 알려줍니다.

shell- 입력 한 것을 처리하기 위해 운영 체제에 의해 실행되는 실제 프로그램 command line. 따라서 이름은 비 친화적 인 OS 코어를위한 사용자 친화적 인 쉘입니다. $또는 과 같은 명령 프롬프트를 제공 >하여 자체 명령과 앱을 실행합니다. 항상 shell프로그램을 통해 작업 하고 콘솔이나 터미널로 직접 작동하지 마십시오.

콘솔 -텍스트 모드 프로그램이 실행중인 창입니다. 이 창은 키 누름을 처리하고 너비와 높이임을 알고 있습니다. 전체 화면 일 수 있습니다.

터미널 -문자 입력 스트림을 허용하고 표시하는 사람 용 디스플레이 장치입니다. 높이나 너비 (해킹 만) 또는 키보드 키 누르기에 대한 피드백은 없습니다. 문자 만 이동합니다. 터미널은이 스트림에서 특수한 시퀀스를 처리하여 색상을 지정하고 화면을 정리하며 다른 불쾌한 작업을 수행합니다. 출력 할 파이프 파일에 특수 시퀀스가 ​​포함되어 있으면 문제가 발생하기 쉽기 때문에 터미널은 벗겨집니다. 출력을 보내고 출력 장치를 제어하기위한 단일 스트림 tap이 필요하고 창을 초기화하거나 만들 필요없이 대화 할 수 있기 때문에 네트워킹 및 장치 디버그 인터페이스에서 널리 사용됩니다 .

시리얼 콘솔 -터미널처럼 입력 스트림을 처리하는 콘솔입니다.


3

용어가 매우 모호하기 때문에 이것은 모호한 주제입니다. 이 답변 전체에서 제공 한 링크를 읽어 보는 것이 좋습니다.이 링크는이 답변의 소스이기도합니다.

쉘은 커널 위의 계층입니다 :

  • 사용자가 입력 한 명령을 해석하여 처리합니다. 쉘은 사용자와 달리 커널에 액세스 할 수 있습니다. 사용자는 쉘을 사용하여 명령을 입력하고 프로세스 (예 : 프로그램 실행)를 사용하여 커널에 액세스 할 수 있습니다. 프로그램은 시스템 호출 을 사용 하여 커널 기능에 액세스합니다. 모든 시스템 호출은 시스템 API를 구성합니다.
  • 쉘의 예는 두 번째 터미널 정의에 나와 있습니다.

단말은 많은 의미를 갖는다 :

  • (1) 텍스트 터미널 . 이것은 디스플레이 모니터와 키보드의 조합입니다. 터미널을 컴퓨터에 연결하는 케이블 (종종 간접) 이 케이블의 터미널 끝에 위치했기 때문에 터미널이라고합니다. 많은 터미널이 단일 메인 프레임 / 컴퓨터에 연결되어 여러 사용자가 동시에 컴퓨터에 액세스 할 수 있었기 때문에 이러한 터미널은 일반적으로 컴퓨터와 물리적으로 분리되었습니다.
  • (2) 터미널 창 일명 터미널 에뮬레이터 . Linux에서 터미널 창은 GUI 창에 포함 된 콘솔의 에뮬레이션입니다. 텍스트를 입력하는 것이 CLI이며이 입력은 사용중인 쉘에서 읽습니다. 많은 유형의 쉘 (예 : bash, dash, ksh88)과 터미널 (예 : konsole, gnome)이 있습니다.
  • (3) 의사 터미널 에 대한 설명은이 내용을 참조 하십시오 . 프로세스와 터미널 에뮬레이터 간의 통신에 사용되는 두 개의 '장치 파일'쌍입니다.

콘솔은 많은 의미가있다 :

  • (1) 컴퓨터의 컨트롤을 포함하는 계기판.
  • (2) 시스템 콘솔,컴퓨터 콘솔 . 이것은 디스플레이 모니터와 컴퓨터에 연결된 키보드의 조합입니다. 이것은 우리가 '텍스트 터미널'이라고 부르는 것과 동의어입니다. 때때로 마우스와 같은 다른 사용자 입력 주변 장치는 콘솔의 일부입니다.
  • (3) 전체 화면을 다루는 명령 줄 인터페이스. 이것은 터미널 창과 대조적입니다. 터미널 창은 오른쪽 상단에 X가있는 GUI입니다. Unix 계열 시스템에서 CLI (명령 줄 인터페이스)에 대한 두 가지 표시 모드가 있습니다. 터미널 창과 마찬가지로 콘솔도 많은 쉘을 실행할 수 있습니다.

종종 운영 체제를 사용하면 실제 콘솔에서 여러 콘솔을 실행할 수 있습니다 (콘솔 정의 2). 이들은라고 가상 콘솔 일명 가상 터미널을 , 그리고를 통해 액세스 할 수 있습니다 ctrl+ alt+ Fx조합. 예를 들어, 세 번째 가상 콘솔을 열려면 ctrl+ alt+ 조합을 사용하십시오 F3.

콘솔 (정의 3)은 비동기식으로 보일 수 있지만 GUI를 지원하지 않는 OS가 많기 때문에 전문가들은 콘솔을 편리하게 사용할 수 있어야합니다. 또한 GUI가 응답하지 않으면 콘솔이 여전히 작동 할 수 있습니다.


2

오늘날 대부분의 터미널 은 엄격하게 말해서 터미널 에뮬레이터 입니다. 그것은의 일종 역할 시스템에서 제공하는 기본 인터페이스 유닉스 계열 시스템의 작동과 동시에. 실제로 GUI를 포함한 모든 것이 그 위에 빌드됩니다.
구어체로 "터미널"은 별 모양이있는 컴퓨터 네트워크의 끝점을 가리킬 수도 있습니다.

콘솔 은 터미널의 (하드웨어) 인터페이스를 나타냅니다. 즉, 시리얼 콘솔이 있으며 오늘날 대부분 가상 콘솔이 있습니다.
구어 적으로 "콘솔"이라고하는 창은 가상 콘솔을 통해 시스템의 터미널에 연결된 쉘입니다.

컴퓨터가 비싸던 시절에는 시설에 직렬 케이블 ( "직렬 콘솔")을 통해 하나의 실제 컴퓨터와 여러 개의 터미널이 연결되어있을 수 있습니다. OS, 작업 등은 실제 컴퓨터에서 수행되었으며 입력 및 출력은 콘솔에서 발생했습니다. 남은 시간 동안 + + (를 통해)를
눌러 가상 터미널 간을 전환 할 수 있습니다 . 오늘날 "씬 클라이언트"라는 개념은 방대한 양의 리소스를 중앙 집중화하고 실제 작업장에서 최첨단 인터페이스를 제공하기에 충분한 하드웨어를 제공하는 방향으로 되돌아갑니다. CTRLALTF1F6

shell 은 터미널에서 볼 수있는 "엔진"입니다. 시스템 자체와의 상호 운용성을 제공하고 자동 완성, 변수 등과 같은 멋진 기능을 추가
합니다. 시스템 호출을 사용하는 실제 OS / 커널과 사용자 사이를 전환합니다. 쉘없이 시스템 호출은 코딩 assembler과 약간 같 으며 쉘은 적어도 당신에게 제공합니다 C.

명령 행 은 텍스트 창을 통해 입력 및 출력을 교환하는 방법을 나타냅니다. 입력하는 줄 (현재) 명령 줄입니다. 일반적으로이 방법을 명령 행 인터페이스 또는 CLI 라고합니다 .

  1. 핵심
  2. 터미널 제공
  3. 터미널은 콘솔을 통해 연결
  4. 콘솔은 쉘을 실행
  5. 명령 및 출력은 명령 행 (인터페이스)을 통해 교환됩니다.

1
커맨드 라인 명령어는 커널이 아니라 쉘에 의해 이해됩니다. “커널이 이해하는 핵심 명령어 프레임 워크”는 시스템 호출입니다. “기본 UNIX 명령 행 인터페이스”는 쉘이며,“좋은 기능”과 그 사이에는 구분이 없습니다. "터미널 에뮬레이터 창"은 콘솔이 아닙니다.
Gilles

1
@ 질 조정. 분명히 거기에 어떤 것들이 혼동되었습니다.
Mark
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.