Sự khác biệt giữa shell, console và terminal là gì?


Câu trả lời:


168

Trong thế giới linux, tất cả chúng có thể trông giống nhau theo quan điểm của người dùng tại bàn phím. Sự khác biệt là cách chúng tương tác với nhau.

Các vỏ là chương trình thật xử lý lệnh và trả về đầu ra. Hầu hết các shell cũng quản lý các quá trình nền trước và nền, lịch sử lệnh và chỉnh sửa dòng lệnh. Các tính năng này (và nhiều tính năng khác) là tiêu chuẩn bash, lớp vỏ phổ biến nhất trong các hệ thống linux hiện đại.

Một thiết bị đầu cuối đề cập đến một chương trình bao bọc chạy shell. Nhiều thập kỷ trước, đây là một thiết bị vật lý bao gồm ít hơn một màn hình và bàn phím. Khi các hệ thống unix / linux bổ sung các hệ thống đa xử lý và cửa sổ tốt hơn, khái niệm thiết bị đầu cuối này đã được trừu tượng hóa thành phần mềm. Bây giờ bạn có các chương trình như Gnome Terminal sẽ khởi chạy một cửa sổ trong môi trường cửa sổ Gnome sẽ chạy shell mà bạn có thể nhập lệnh.

Các giao diện điều khiển là một loại đặc biệt của thiết bị đầu cuối . Trong lịch sử, bàn điều khiển là một bàn phím và màn hình được cắm vào cổng bàn điều khiển nối tiếp chuyên dụng trên máy tính được sử dụng để liên lạc trực tiếp ở mức độ thấp với hệ điều hành. Các hệ thống linux hiện đại cung cấp bảng điều khiển ảo . Chúng được truy cập thông qua các tổ hợp phím (ví dụ Alt+ F1hoặc Ctrl+ Alt+ F1; các phím chức năng số bàn giao tiếp khác nhau) được xử lý ở mức thấp của hệ điều hành linux - điều này có nghĩa là không có dịch vụ đặc biệt nào cần được cài đặt và định cấu hình để chạy . Tương tác với bàn điều khiển cũng được thực hiện bằng chương trình shell .


1
Trước khi các thiết bị đầu cuối là màn hình với bàn phím, chúng là teletypes - một loại máy đánh chữ điện. vi.wikipedia.org/wiki/Teleprinter
Kevin Panko

13
Bảng điều khiển đôi khi có nghĩa là "bàn phím và màn hình gắn liền với máy tính này." Ví dụ: "Tôi đã đăng nhập từ bảng điều khiển vì máy chủ không phản hồi với mạng."
Kevin Panko

1
@Doug Harris: Bạn có thể thêm một số hình ảnh về phần cứng mà bạn đang nói đến không?
móng vuốt

1
Khi tôi học đại học vào cuối những năm 1980, tôi đã làm rất nhiều công việc trên các thiết bị đầu cuối DEC VT220 - en.wikipedia.org/wiki/VT220 - Đó là một ví dụ tốt về thiết bị vật lý mà tôi mô tả.
Doug Harris

5
Vì vậy, nếu các thiết bị đầu cuốibảng điều khiển , trong thời hiện đại, mỗi thiết bị được triển khai trong phần mềm - sự khác biệt giữa hai (bây giờ) là gì?
Gavin Hope

15

Shell là một chương trình đưa ra lời nhắc và chờ bạn gõ lệnh. Nó thực thi chúng và sau đó in một dấu nhắc khác. Vì vậy, giống như CMD trong Windows, hoặc Bash trong Unix. Nó có thể chạy trong một thiết bị đầu cuối hoặc trên bàn điều khiển.

Một bàn điều khiển ban đầu là một vật lý, một bảng điều khiển. Trong thuật ngữ điện toán, nó thường có nghĩa là màn hình mà bạn nhìn thấy trước khi GUI khởi động hoặc sau khi kết thúc; đôi khi bạn có thể chuyển sang hiển thị nó thay vì GUI. Đó là nơi hệ điều hành in các thông báo lỗi. Trên máy tính nhiều người dùng, đó là màn hình thực sự được gắn vào máy tính. Chỉ cần làm bạn bối rối, trên Windows nó cũng có thể có nghĩa là một cửa sổ có vỏ lệnh trong đó, tức là một thiết bị đầu cuối.

Một thiết bị đầu cuối ban đầu cũng là phần cứng, được sử dụng để giao tiếp với máy tính. Ngày nay, nó thường đề cập đến một cửa sổ có dòng lệnh (shell), có thể xuất hiện trong cửa sổ GUI hoặc thay vì GUI.


2

Terminal là giao diện dựa trên văn bản (có thể là vỏ)

Sự khác biệt giữa giao diện điều khiển và hệ vỏ là cái tôi chưa nắm bắt được, nhưng tôi có thể cho bạn biết thiết bị đầu cuối khác với vỏ như thế nào.

Thiết bị đầu cuối là ( theo Wikipedia ) "một giao diện máy tính nối tiếp để nhập và hiển thị văn bản. Thông tin được trình bày dưới dạng một loạt các ký tự được tạo trước được chọn".

Bạn có thể sử dụng một thiết bị đầu cuối để tương tác với trình bao, nhưng bạn cũng có thể sử dụng nó để tương tác với GUI dựa trên văn bản , đôi khi được gọi là Giao diện người dùng thiết bị đầu cuối . Ví dụ:

  • Vim có các thành phần GUI bao gồm số dòng và tab được đặt tên
  • Nano có các thành phần GUI bao gồm menu trợ giúp của các lệnh
  • Tmux có các thành phần GUI bao gồm một thanh trạng thái và các đường phân chia giữa các khung
  • Minicom có các thành phần GUI bao gồm menu và thanh trạng thái

Trong mỗi trường hợp, các thành phần GUI được "vẽ" bằng văn bản thay vì pixel.


Tôi không chắc về định nghĩa này của nó chỉ dựa trên văn bản. Theo một cách nào đó, một số GUI có thể được coi là thiết bị đầu cuối imo.
jiggunjer

2

Dành cho người mới bắt đầu

Để biết mô tả chi tiết hơn: https://askubfox.com/a/506628/130518

  • terminal = môi trường nhập / xuất văn bản
  • bàn điều khiển = thiết bị đầu cuối vật lý
  • shell = trình thông dịch dòng lệnh

Tôi sẽ mô tả trường hợp sử dụng bình thường nhất cho điều này trong văn bản sau đây.

Một thiết bị đầu cuối sử dụng một vỏ. Một vỏ có thể chạy mà không cần thiết bị đầu cuối.

Liên quan đến các vật dụng hàng ngày:

  • Thiết bị đầu cuối -> Màn hình TV trong nhà của bạn
  • Shell -> Chương trình đang chạy trên màn hình TV

Một cách khác để xem xét nó: Tai của bạn (đầu vào) và miệng (đầu ra) là các thiết bị đầu cuối cho âm thanh. Bộ não của bạn là thông dịch viên của những âm thanh đó bằng cách sử dụng một vỏ cụ thể (xử lý).

Thiết bị đầu cuối dành cho con người chúng ta, vì vậy chúng ta có thể đọc và ghi vào / từ vỏ. Shell có thể chạy trong các quy trình nền không yêu cầu tương tác của con người, ví dụ như công việc định kỳ và do đó không yêu cầu thiết bị đầu cuối.

Một vài ví dụ về thiết bị đầu cuối tồn tại:

  • Dấu nhắc lệnh
  • hướng dẫn
  • thiết bị đầu cuối gnome
  • Kẻ hủy diệt

Một vài ví dụ về đạn pháo tồn tại:

  • Bash
  • sh (vỏ Bourne)
  • PowerShell [cửa sổ]
  • zsh (vỏ Z)

Tôi chỉ viết cách hai thứ này hoạt động bình thường, có những cách khác để chúng hoạt động, nhưng đó là cho người dùng cao cấp hơn.


1

Nghĩ đến bối cảnh khác, đó là sự phát triển.
Ngay cả khi bạn không có kiến ​​thức sâu rộng về phát triển, bạn có thể biết những điều cơ bản, đó là: bạn chỉnh sửa chương trình, bạn gửi nó cho trình biên dịch hoặc trình thông dịch xây dựng ứng dụng đã biên dịch.
Bảng điều khiển giống như trình soạn thảo chương trình của bạn; nó giúp bạn bằng văn bản nhưng nó không thực sự thực hiện bất cứ điều gì: khi bạn hoàn thành, bạn gửi nó cho trình biên dịch cho điều đó.

Bạn có thể sử dụng trình soạn thảo ưa thích của mình, vim, gedit, emacs, notepad ++, Netbeans, eclise, v.v. nhưng cuối cùng chúng chỉ là các công cụ khác nhau: nếu bạn viết cùng một chương trình thì đầu ra sẽ giống nhau.
Trong ẩn dụ này, shell là trình biên dịch. Các lệnh được nhập vào thiết bị đầu cuối, được gửi đến shell để giải thích chúng và thực thi chúng ngay lập tức.
Vì vậy, trong khi các thiết bị đầu cuối chỉ là giao diện người dùng cho trình bao, thì trình bao chứa ngôn ngữ thực tế, như xảy ra đối với trình biên dịch.

Rõ ràng một thiết bị đầu cuối không chính xác là một trình soạn thảo văn bản, chủ yếu là vì nó không tạo ra một tệp mà gửi văn bản đến trình bao bên dưới và lấy đầu ra từ nó.

Và shell không phải là trình biên dịch, trên thực tế, nó diễn giải lệnh của bạn và thực thi nó ngay lập tức thay vì xây dựng một tệp thực thi.

Ngay cả sự khác biệt lớn này, tôi tìm thấy phép ẩn dụ này để giúp rất nhiều trong việc hiểu ý tưởng này.


0

Thực sự không có nhiều khác biệt. Quay trở lại khi "shell" là một chương trình, "terminal" là một trình bao bọc frontend cho chương trình này và "console" là kết nối vật lý với máy tính (bàn phím / màn hình).

Có một sự khác biệt tùy thuộc vào hệ điều hành bạn đang chạy. Shell "tiêu chuẩn" là BASH , thường có sẵn trên tất cả các hương vị của Linux / Unix. Windows sử dụng một vỏ hoàn toàn khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.