Câu hỏi Sự khác nhau giữa shell, console và terminal là gì?


Tôi bối rối với thuật ngữ. Sự khác nhau giữa shell, console và terminal là gì?


162
2018-05-24 13:22


gốc


và thế còn prompt và ngay cả command line? - n611x007
Hãy xem câu hỏi này từ Unix và Linux: unix.stackexchange.com/questions/4126/… - Flimm
Vợ tôi nói "màn hình đen" - Kenji Noguchi


Các câu trả lời:


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

Các vỏ là chương trình thực sự xử lý các lệnh và trả về kết quả đầu ra. Hầu hết các shell cũng quản lý các tiến 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 trong bash, hệ vỏ phổ biến nhất trong các hệ thống linux hiện đại.

A thiết bị đầu cuối đề cập đến một chương trình bao bọc chạy một trình bao. 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ư Thiết bị đầu cuối Gnome khởi chạy một cửa sổ trong môi trường cửa sổ Gnome sẽ chạy vỏ mà bạn có thể nhập lệnh.

Các bảng điều khiển là một loại đặc biệt thiết bị đầu cuối. Trong lịch sử, giao diện điều khiển là một bàn phím và màn hình duy nhất được cắm vào một cổng giao diện điều khiển nối tiếp chuyên dụng trên một 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. Hệ thống linux hiện đại cung cấp bàn giao tiếp ảo. Chúng được truy cập thông qua các tổ hợp phím (ví dụ: Alt+F1 hoặc là Ctrl+Alt+F1; các nút chức năng số console 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à cấu hình để chạy. Tương tác với bảng điều khiển cũng được thực hiện bằng cách sử dụng vỏ chương trình.


144
2018-05-24 13:37



Trước khi thiết bị đầu cuối là màn hình với bàn phím, chúng là các loại máy điện báo - một loại máy đánh chữ điện. en.wikipedia.org/wiki/Teleprinter - Kevin Panko
Bảng điều khiển đôi khi có nghĩa là "bàn phím và màn hình được gắn vào 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 mạng". - Kevin Panko
@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? - claws
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 việc trên các thiết bị đầu cuối DEC VT220 - en.wikipedia.org/wiki/VT220 - Đó là một ví dụ điển hình về thiết bị vật lý mà tôi mô tả. - Doug Harris
Do đó, nếu thiết bị đầu cuối và bàn giao tiếp là, trong ngày hiện đại, từng được thực hiện trong phần mềm - sự khác biệt giữa hai (bây giờ) là gì? - Gavin Hope


Một trình bao là một chương trình đặt dấu nhắc và đợi bạn gõ lệnh. Nó thực hiện chúng và sau đó in dấu nhắc khác. Vì vậy, 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ữ máy tính, nó thường có nghĩa là màn hình mà bạn thấy trước khi GUI khởi động hoặc sau khi nó 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 đa người dùng, đó là màn hình thực sự được gắn vào máy tính. Chỉ cần để gây nhầm lẫn cho bạn, trên Windows nó cũng có thể có nghĩa là một cửa sổ với một lệnh shell trong nó, tức là một thiết bị đầu cuối.

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


10
2018-05-24 13:39





Hãy nghĩ đến một bối cảnh khác, đó là sự phát triển.
Thậm chí nếu bạn không có kiến ​​thức sâu 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 một chương trình, bạn gửi nó tới trình biên dịch hoặc tới một trình thông dịch để xây dựng một ứng dụng đã biên dịch.
Bàn điều khiển giống như trình chỉnh sửa chương trình của bạn; nó giúp bạn trong viết 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ó đến 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 bạn, vim, gedit, emacs, notepad ++, Netbeans, eclise etc.etc 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 phép ẩn dụ này, trình bao 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 trình bao giải thích chúng và thực thi chúng ngay lập tức.
Vì vậy, trong khi thiết bị đầu cuối chỉ là front-end cho shell, shell chứa ngôn ngữ thực sự, như xảy ra cho 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à bởi vì nó không tạo ra một tệp nhưng gửi văn bản tới lớp vỏ bên dưới và truy xuất đầu ra từ nó.

Và trình bao 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ả whit sự khác biệt lớn này, tôi tìm thấy ẩn dụ này để giúp đỡ rất nhiều trong việc hiểu ý tưởng này.


1
2017-09-21 20:13





Thực sự không có nhiều khác biệt. Quay lại khi "shell" là một chương trình, "terminal" là một wrapper 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ó sự khác biệt tùy thuộc vào hệ điều hành bạn đang chạy. Vỏ "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 trình bao hoàn toàn khác.


0
2018-05-24 13:37





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

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

Các thiết bị đầu cuối Là (theo Wikipedia) "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 mảng ký tự được chọn trước".

Bạn có thể sử dụng một thiết bị đầu cuối để tương tác với một trình bao, nhưng bạn cũng có thể sử dụng nó để tương tác với một 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 phần tử GUI bao gồm số dòng và các tab được đặt tên
  • Nano có các phần tử GUI bao gồm một menu trợ giúp của các lệnh
  • Tmux có các phần tử GUI bao gồm thanh trạng thái và phân chia các dòng giữa các bảng
  • Minicom có các phần tử GUI bao gồm các menu và thanh trạng thái

Trong mỗi trường hợp, các phần tử GUI được "rút" bằng văn bản thay vì pixel.


0
2018-01-27 21:26



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


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

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

  • terminal = text input / môi trường đầu ra
  • console = terminal vật lý
  • shell = thông dịch dòng lệnh

Tôi sẽ mô tả trường hợp sử dụng thông 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 cái vỏ. Một trình bao có thể chạy mà không cần thiết bị đầu cuối.

Để liên quan đến các mục hàng ngày:

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

Một cách khác để nhìn vào nó: Tai của bạn (đầu vào) và miệng (đầu ra) là các đầu cuối cho âm thanh. 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 trình bao (xử lý) cụ thể.

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ỏ. Vỏ 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ụ: cron job, và do đó không yêu cầu terminal.

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

  • Dấu nhắc lệnh
  • đánh thức
  • gnome-terminal
  • Kẻ hủy diệt

Vài ví dụ về vỏ tồn tại:

  • Bash
  • sh (vỏ Bourne)
  • PowerShell [windows]
  • zsh (vỏ Z)

Tôi chỉ viết hai cách này thường hoạt động như thế nào, có nhiều cách khác mà họ làm việc, nhưng đó là cho một người dùng cao cấp hơn.


0
2018-03-06 10:29