Linux에서 이러한 개념(셸, 터미널, 콘솔 및 명령줄)의 차이점은 무엇입니까?

Linux에서 이러한 개념(셸, 터미널, 콘솔 및 명령줄)의 차이점은 무엇입니까?

최근 초보로서 Shell, Terminal, Console, Command-line이라는 세 가지 개념이 저를 많이 헷갈리게 했습니다. 특히 콘솔과 터미널?

답변1

쉘은 컴퓨터와 인터페이스하는 데 사용하는 프로그램으로, 명령줄 인터페이스일 수도 있고 포인트 앤 클릭 인터페이스일 수도 있습니다. Bash는 Gnome2 등과 마찬가지로 쉘입니다.

터미널은 현대 컴퓨팅에 로드된 용어입니다. 이는 메인프레임에 직접 연결된 하드웨어 장치(키보드와 모니터만 있는 씬 클라이언트)에 입력하던 시절의 메인프레임 시대에서 유래되었습니다. 하드웨어 터미널은 메인프레임에서 실행되는 소프트웨어 셸과 상호 작용했습니다. PC 및 기타 소형 씩 클라이언트 시스템이 등장한 후 우리는 씩 클라이언트가 메인프레임에 연결된 씬 클라이언트 터미널인 것처럼 가장하고 원격으로 연결할 수 있게 해주는 터미널 에뮬레이터 소프트웨어를 사용하기 시작했습니다. 이것이 바로 CICS 애플리케이션과 같은 것들이 틈새 시장을 찾은 곳입니다.

현대적인 의미에서 Linux '터미널'은 gnome-terminal로컬 시스템에서 쉘을 실행하는 터미널 에뮬레이터입니다. 중요한 점은 터미널에는 항상 셸이 포함되어 있으며 하드웨어 터미널이든 소프트웨어 터미널이든 관계없이 터미널을 사용하여 셸에 접근하고 상호 작용한다는 것입니다.

현대적인 사용법에서 클라이언트(컴퓨팅을 위한 클라이언트/서버 모델)는 서비스에 연결하고 서비스를 사용하는 소프트웨어 조각입니다. 귀하의 웹 브라우저는 HTTP 서비스용 클라이언트입니다. Samba 또는 Windows 서버에 연결하려면 Samba 클라이언트가 필요합니다. 원격 링크를 통한 터미널 에뮬레이터는 원격 연결을 위해 telnet, ssh 또는 하이퍼텀과 같은 클라이언트를 사용하는 경우가 많습니다. 클라이언트는 일반적으로 네트워크를 매체로 사용하여 연결하고 HTTP와 같은 통신 프로토콜을 기반으로 메시지를 전달합니다.

클라이언트라는 용어는 하드웨어를 나타낼 수도 있지만 일부 틈새 영역을 제외하고는 덜 일반적입니다. 예전에는 독립형 시스템을 네트워크에 연결하면 해당 시스템이 해당 네트워크의 클라이언트가 되었습니다. 여기서는 Thin-client(원격으로 소프트웨어를 실행하는 디스크 없는 시스템) 및 Thick-client(OS, CPU, RAM 및 보조 스토리지를 모두 갖춘 독립형 PC)와 같은 용어도 있습니다. 화자가 하드웨어 장치(PC/서버 등)를 가리키는지 아니면 특정 소프트웨어 클라이언트를 가리키는지 일반적으로 문맥을 통해 알 수 있습니다.

명확히 하는 데 도움이 되기를 바랍니다.

답변2

터미널은 전선 끝에 있고, 쉘은 거북이의 집이고, tty는 이상한 약어이고, 콘솔은 일종의 캐비닛입니다.

뭐, 어쨌든 어원적으로 말하자면요.

유닉스 용어로 짧은 대답은 다음과 같습니다.

  • 터미널 = tty = 텍스트 입력/출력 환경
  • 콘솔 = 물리적 터미널
  • 쉘 = 명령줄 해석기

콘솔, 터미널 및 tty는 밀접하게 관련되어 있습니다. 원래는 컴퓨터와 상호작용할 수 있는 장비를 의미했습니다. 유닉스 초기에는텔레프린터- 타자기와 유사한 스타일의 장치로, 텔레타이프라이터(Teletypewriter) 또는 줄여서 "tty"라고도 합니다. '터미널'이라는 이름은 전자적 관점에서, '콘솔'이라는 이름은 가구 관점에서 유래했습니다. 유닉스 역사 초기에 전자 키보드와 디스플레이가 터미널의 표준이 되었습니다.

유닉스 용어로 말하면,tty특별한 종류이다장치 파일이는 여러 가지 추가 명령을 구현합니다(ioctl) 읽기 및 쓰기를 넘어서는 것입니다. 가장 일반적인 의미로는,단말기tty와 동의어입니다. 일부 tty는 하드웨어 장치를 대신하여 커널에 의해 제공됩니다. 예를 들어 키보드에서 입력이 들어오고 출력이 텍스트 모드 화면으로 이동하거나 입력 및 출력이 직렬 회선을 통해 전송됩니다. 다른 tty(때때로 호출됨)의사 tty이라는 프로그램에 의해 (얇은 커널 계층을 통해) 제공됩니다.터미널 에뮬레이터, 와 같은Xterm(에서 실행X 윈도우 시스템),화면(프로그램과 다른 터미널 사이에 격리 계층을 제공합니다)SSH(한 컴퓨터의 터미널을 다른 컴퓨터의 프로그램과 연결)예상하다(터미널 상호 작용 스크립팅용) 등

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

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

또한보십시오가상 터미널이 "가상"인 이유는 무엇이며 "실제" 터미널은 무엇이며, 왜, 어디에 있습니까?.


껍데기사용자가 로그인할 때 보게 되는 기본 인터페이스로, 주요 목적은 다른 프로그램을 시작하는 것입니다. (원래 비유가 쉘이 사용자의 홈 환경이라는 것인지, 아니면 쉘이 다른 프로그램이 실행되는 환경이라는 것인지는 모르겠습니다.)

유닉스 서클에서는껍데기을 의미하는 것으로 전문화되었습니다.명령줄 셸, 시작하려는 응용 프로그램의 이름을 입력하고 응용 프로그램이 작동해야 하는 파일 또는 기타 개체의 이름을 입력하고 Enter 키를 누르는 것을 중심으로 합니다. 다른 유형의 환경에서는 "쉘"이라는 단어를 사용하지 않습니다. 예를 들어, 창문 시스템에는 “창 관리자" 그리고 "데스크탑 환경", "쉘"이 아닙니다.

다양한 유닉스 쉘이 있습니다. 대화형 사용을 위해 널리 사용되는 셸은 다음과 같습니다.세게 때리다(대부분의 Linux 설치에서 기본값)zsh(강력함과 사용자 정의 가능성을 강조함) 및물고기(단순함을 강조함)

명령줄 셸에는 명령을 결합하는 흐름 제어 구성이 포함되어 있습니다. 대화형 프롬프트에서 명령을 입력하는 것 외에도 사용자는 스크립트를 작성할 수 있습니다. 가장 일반적인 쉘은 다음을 기반으로 하는 공통 구문을 갖습니다.Bourne_shell. "를 논의할 때쉘 프로그래밍”, 쉘은 거의 항상 Bourne 스타일 쉘로 암시됩니다. 스크립팅에 자주 사용되지만 고급 대화형 기능이 부족한 일부 셸은 다음과 같습니다.Korn 쉘(ksh)그리고 많은금연 건강 증진 협회변형. 거의 모든 Unix 계열 시스템에는 /bin/sh일반적으로 ash, ksh 또는 bash로 Bourne 스타일 쉘이 설치되어 있습니다.

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


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

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

재활용 출처유닉스 및 리눅스

답변3

좋아요,

쉘: 명령줄 인터페이스에서 명령을 실행합니다. "cd" "grep" 등과 같은 것을 작성할 때 무엇을 해야 할지(어떤 프로그램을 호출할지) 아는 프로그램입니다. 일반적으로 bash 또는 zsh(가장 일반적)라고도 합니다. 쉘은 또한 직접 스크립트를 실행합니다(확장은 필수는 아니지만 일반적으로 .sh 파일).

터미널: 실제 쉘을 실행하기 위한 그래픽 창(보통)입니다. 탭, 글꼴, 행 X 열 크기 등과 같은 추가 기능이 있습니다. 원하는 쉘을 실행하도록 터미널을 정의할 수 있습니다.

클라이언트: 나머지와는 아무 관련이 없습니다. 클라이언트/서버 아키텍처(웹 사이트, SSH 연결, 데이터베이스 관리 프로그램, 멀티플레이어 게임)가 있는 모든 앱에서 클라이언트는 사용자와 상호 작용하며 서버에 주문을 보냅니다.

예: SSH로 연결.

  • 터미널을 엽니다.
  • 다음 명령을 실행하세요: ssh[이메일 보호됨]
  • 쉘은 실제로 ssh 명령을 실행하고 SSH 클라이언트를 시작하는 것입니다.
  • 이 클라이언트는 intarwebs를 통해 SSH 서버에 연결됩니다.
  • 터미널에 "whoami"를 입력하면 쉘이 SSH 클라이언트를 실행하고 있으므로 명령이 서버로 전송된다는 것을 알 수 있습니다. 넷의 다른 쪽 끝에서 서버는 해당 명령을 실행하고 결과를 다시 쉘로 보내고 터미널은 데스크탑에 사람이 읽을 수 있는 보기 좋은 디스플레이를 만듭니다.

게임으로 전환: "터미널"은 아름다운 인터페이스이고, "셸"은 클릭과 키 탭으로 무엇을 해야 할지 아는 내부 내장이고, "클라이언트"는 게임 엔진 자체가 되어 게임에 물건을 주고받게 됩니다. 모든 플레이어가 지연 없이 서로 즐겁게 프래그먼트를 즐길 수 있도록 서버를 개선했습니다. :)

매우 지나치게 단순화된 보기이지만 세부 정보가 없으면 딱 그 정도입니다.

답변4

처럼에 썼다Ask Ubuntu에 대한 비슷한 질문:

  1. 터미널 = 텍스트 입출력 환경
  2. 콘솔 = 물리적 터미널
  3. 쉘 = 명령줄 해석기

콘솔과 터미널은 밀접하게 연관되어 있습니다. 원래는 컴퓨터와 상호 작용할 수 있는 장비를 의미했습니다. (...) 유닉스 용어에서 터미널은 읽기 및 쓰기 이외의 여러 추가 명령(ioctls)을 구현하는 특정 종류의 장치 파일입니다. 의사 터미널 또는 의사 tty라고도 하는 일부 터미널은 터미널 에뮬레이터라는 프로그램에 의해 (얇은 커널 계층을 통해) 제공됩니다. 일부 유형의 터미널 에뮬레이터는 다음과 같습니다.

  • X Window 시스템에서 실행되는 GUI 애플리케이션: Xterm, Gnome Terminal, Konsole, Terminator 등
  • 프로그램과 다른 터미널 사이에 격리 계층을 제공하는 Screen 및 tmux.
  • SSH는 한 시스템의 터미널을 다른 시스템의 프로그램과 연결합니다.
  • 터미널 상호 작용 스크립팅을 기대합니다.

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

(...) 명령줄은 사용자가 명령(일련의 문자로 표현됨 - 일반적으로 명령 이름과 일부 매개변수로 표시됨)을 입력하고반품해당 명령을 실행하는 키입니다.

쉘은 사용자가 로그인할 때 보게 되는 기본 인터페이스로, 주요 목적은 다른 프로그램을 시작하는 것입니다. (원래 비유가 쉘이 사용자의 홈 환경이라는 것인지, 아니면 쉘이 다른 프로그램이 실행되는 환경이라는 것인지는 모르겠습니다.)

유닉스 서클에서 쉘은 시작하려는 애플리케이션의 이름을 입력하고 그 뒤에 애플리케이션이 작동해야 하는 파일이나 기타 개체의 이름을 입력하고 Enter 키를 누르는 것을 중심으로 하는 명령줄 쉘을 의미하도록 전문화되었습니다. 다른 유형의 환경(최근 Gnome Shell을 제외하고)에서는 일반적으로 “shell”이라는 단어를 사용하지 않습니다. 예를 들어, 윈도우 시스템에는 "셸"이 아닌 "창 관리자" 및 "데스크톱 환경"이 포함됩니다.

Google에서 검색하면 이 주제에 대한 유용한 정보를 많이 찾을 수 있습니다.

관련 정보