Sự khác biệt giữa Terminal, Console, Shell và Command Line là gì?


211

Sự khác biệt giữa Terminal, Console, Shell và Command Line là gì?


1
(1/2) Agent Cool hầu hết là chính xác, nhưng định nghĩa về Console mà anh ta cung cấp là lỗi thời, với chủ đề này. Liên kết của anh ấy có thông tin chính xác, nếu bạn làm theo nó mặc dù. Đọc toàn bộ định nghĩa tại liên kết của mình. Bảng điều khiển được sử dụng một cách lỏng lẻo có nghĩa là rất nhiều thứ tương tự, nhưng quan trọng nhất là nó thường đề cập đến các thiết bị đầu vào và đầu ra của con người ĐỊA PHƯƠNG, ví dụ như bàn phím, màn hình và có thể là chuột.
0xSheepdog

1
(2/2) Điều này có vẻ giống như một điểm phạm vi, nhưng là một hệ thống dày dạn, tôi sẽ nói với bạn rằng nó không phải . Khi một hệ thống có vấn đề và dường như bị sập / tắt / ngoại tuyến hoàn toàn, bạn nên kiểm tra bảng điều khiển vật lý của hệ thống để xem nó có còn hoạt động không, nhưng đơn giản là mất kết nối mạng. Chi tiết nhỏ này có thể giúp bạn tiết kiệm hoặc tiêu tốn dữ liệu, xử lý thông tin, v.v. Pedantic, vâng. Nhưng quan trọng.
0xSheepdog

6
@ 0xSheepdog Bạn có thể muốn mở rộng những bình luận này thành một câu trả lời đầy đủ (bao gồm cả định nghĩa hoặc giải thích cho các điều khoản khác), được đăng như vậy. Không có gì xấu khi một câu hỏi có nhiều câu trả lời (ngoại trừ khi chúng truyền đạt chính xác cùng một thông tin và theo cùng một cách). Tôi không chắc tại sao thực tế quan trọng của việc kiểm tra máy cục bộ thực sự dựa vào việc biết / gọi giao diện người thật của nó là bàn điều khiển, nhưng có lẽ có một lập luận rằng nó quan trọng để giao tiếp hiệu quả với đồng nghiệp hoặc sử dụng tài liệu. (Bạn có thể làm rõ điều đó trong câu trả lời của mình.)
Eliah Kagan

4
Do mối quan hệ chặt chẽ của họ (xem tất cả các câu trả lời hay), các thuật ngữ này đôi khi được sử dụng đồng nghĩa, đó có lẽ là điều khiến bạn phải hỏi điều này.
Đánh dấu

Câu trả lời:


143

Câu trả lời ngắn:

  • 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

Câu trả lời dài:

Bảng điều khiển và thiết bị đầu cuối có liên quan chặt chẽ. Ban đầu, chúng có nghĩa là một thiết bị mà qua đó bạn có thể tương tác với máy tính: trong những ngày đầu của unix, điều đó có nghĩa là một thiết bị kiểu teleprinter giống như một máy đánh chữ, đôi khi được gọi là máy đánh chữ, hay viết tắt là viết tắt. Cái tên của thiết bị đầu cuối có tên là 'xuất phát từ quan điểm điện tử' Rất sớm trong lịch sử unix, bàn phím và màn hình điện tử đã trở thành tiêu chuẩn cho các thiết bị đầu cuối.

Thiết bị đầu cuối

Trong thuật ngữ unix, thiết bị đầu cuối là một loại tệp thiết bị cụ thể thực hiện một số lệnh bổ sung ( ioctls ) ngoài việc đọc và ghi. Một số thiết bị đầu cuối được cung cấp bởi kernel thay mặt cho thiết bị phần cứng, ví dụ với đầu vào đến từ bàn phím và đầu ra đi đến màn hình chế độ văn bản hoặc với đầu vào và đầu ra được truyền qua một dòng nối tiếp. Các thiết bị đầu cuối khác, đôi khi được gọi là thiết bị đầu cuối giả hoặc thiết bị giả, được cung cấp (thông qua một lớp nhân mỏng) bởi các chương trình được gọi là trình giả lập thiết bị đầu cuối . Một số loại trình giả lập thiết bị đầu cuối bao gồm:

  • Các ứng dụng GUI chạy trong Hệ thống X Window : Xterm , Gnome Terminal, Konsole, Terminator, v.v.
  • Màn hìnhtmux , cung cấp một lớp cách ly giữa chương trình và thiết bị đầu cuối khác
  • Ssh , kết nối một thiết bị đầu cuối trên một máy với các chương trình trên máy khác
  • Mong đợi , cho các tương tác thiết bị đầu cuối kịch bản

Thiết bị đầu cuối từ cũng có thể có ý nghĩa truyền thống hơn của một thiết bị thông qua đó một thiết bị tương tác với máy tính, thường là với bàn phím và màn hình. Ví dụ, thiết bị đầu cuối X là một loại máy khách mỏng , máy tính chuyên dùng với mục đích duy nhất là điều khiển bàn phím, màn hình, chuột và đôi khi các thiết bị ngoại vi tương tác khác của con người, với các ứng dụng thực tế chạy trên một máy tính khác mạnh hơn.

Bảng điều khiển

Bàn điều khiển nói chung là một thiết bị đầu cuối theo nghĩa vật lý, theo định nghĩa nào đó, thiết bị đầu cuối chính được kết nối trực tiếp với máy. Bảng điều khiển xuất hiện cho hệ điều hành như một thiết bị đầu cuối (được triển khai bằng kernel). Trên một số hệ thống, chẳng hạn như Linux và FreeBSD, bảng điều khiển xuất hiện dưới dạng một số thiết bị đầu cuối (ttys) (tổ hợp phím đặc biệt chuyển đổi giữa các thiết bị đầu cuối này); Chỉ cần nhầm lẫn các vấn đề, tên được đặt cho mỗi thiết bị đầu cuối cụ thể có thể là bảng điều khiển, bộ điều khiển ảo, bộ điều khiển ảo, bộ điều khiển ảo, và các biến thể khác.

Xem thêm Tại sao lại là một Virtual Terminal ảo Virtual, và cái gì / tại sao / ở đâu là Terminal Terminal thực sự? .

Dòng lệnh [giao diện]

Một dòng lệnh là một giao diện trong đó người dùng gõ một lệnh (được thể hiện dưới dạng một chuỗi các ký tự - thường là một tên lệnh theo sau bởi một số tham số) và nhấn Returnphím để thực hiện lệnh đó.

Vỏ

Một vỏ là giao diện chính mà người dùng nhìn thấy khi họ đăng nhập, mà mục đích chính là để bắt đầu chương trình khác. (Tôi không biết liệu ẩn dụ ban đầu là shell là môi trường gia đình cho người dùng hay shell đó là những gì các chương trình khác đang chạy.)

Trong các vòng tròn unix, shell có nghĩa là vỏ dòng lệnh , tập trung vào việc nhập tên của ứng dụng mà người ta muốn bắt đầu, theo sau là tên của các tệp hoặc các đối tượng khác mà ứng dụng sẽ hành động và nhấn phím Enter. Các loại môi trường khác (ngoại trừ đáng chú ý gần đây của Gnome Shell) thường không sử dụng từ "shell shell"; ví dụ, các hệ thống cửa sổ liên quan đến các trình quản lý cửa sổ của Wikipedia và các môi trường máy tính để bàn , và không phải là một lớp vỏ.

Có nhiều vỏ unix khác nhau. Shell mặc định của Ubuntu là Bash (giống như hầu hết các bản phân phối Linux khác). Các lựa chọn thay thế phổ biến bao gồm zsh (trong đó nhấn mạnh đến sức mạnh và khả năng tùy biến) và (trong đó nhấn mạnh đến sự đơn giản).

Các shell dòng lệnh bao gồm các cấu trúc điều khiển luồng để kết hợp các lệnh. Ngoài việc gõ các lệnh tại dấu nhắc tương tác, người dùng có thể viết các tập lệnh. Các shell phổ biến nhất có cú pháp chung dựa trên Bourne_shell . Khi thảo luận về chương trình shell shell của Cameron , lớp vỏ này hầu như luôn được ngụ ý là một kiểu vỏ Bourne. Một số shell thường được sử dụng để viết kịch bản nhưng thiếu các tính năng tương tác nâng cao bao gồm shell Korn (ksh) và nhiều biến thể tro . Khá nhiều hệ thống giống Unix có vỏ kiểu Bourne được cài đặt như /bin/sh, thường là tro, ksh hoặc bash. Trên Ubuntu, /bin/shDash , một biến thể tro (được chọn vì nó nhanh hơn và sử dụng ít bộ nhớ hơn bash).

Trong quản trị hệ thống unix, shell của người dùng là chương trình được gọi khi họ đăng nhập. Tài khoản người dùng bình thường có vỏ dòng lệnh, nhưng người dùng có quyền truy cập hạn chế có thể có vỏ bị hạn chế hoặc một số lệnh cụ thể khác (ví dụ: truyền tệp tài khoản -only).


Sự phân công lao động giữa thiết bị đầu cuối và vỏ không hoàn toàn rõ ràng. Dưới đây là nhiệm vụ chính của họ.

  • Đầu vào: thiết bị đầu cuối chuyển đổi các khóa thành các chuỗi điều khiển (ví dụ Left\e[D). Shell chuyển đổi các chuỗi điều khiển thành các lệnh (ví dụ \e[Dbackward-char).
  • Phiên bản dòng, lịch sử đầu vào và hoàn thành được cung cấp bởi shell.
    • Thay vào đó, thiết bị đầu cuối có thể cung cấp phiên bản dòng, lịch sử và hoàn thành của riêng nó và chỉ gửi một dòng đến trình bao khi nó sẵn sàng để được thực thi. Thiết bị đầu cuối phổ biến duy nhất hoạt động theo cách này là M-x shelltrong Emacs.
  • Đầu ra: shell phát ra các hướng dẫn, chẳng hạn như màn hình hiển thị foo, Thay đổi màu nền trước thành màu xanh lá cây, màu xanh lá cây di chuyển con trỏ sang dòng tiếp theo, v.v. Thiết bị đầu cuối hoạt động theo các hướng dẫn này.
  • Dấu nhắc hoàn toàn là một khái niệm vỏ.
  • Shell không bao giờ nhìn thấy đầu ra của các lệnh mà nó chạy (trừ khi được chuyển hướng). Lịch sử đầu ra (scrollback) hoàn toàn là một khái niệm đầu cuối.
  • Sao chép liên ứng dụng được cung cấp bởi thiết bị đầu cuối (thường là bằng chuột hoặc các chuỗi chính như Ctrl+ Shift+ Vhoặc Shift+ Insert). Shell cũng có thể có cơ chế sao chép nội bộ riêng (ví dụ Meta+ WCtrl+ Y).
  • Kiểm soát công việc (khởi chạy các chương trình trong nền và quản lý chúng) hầu hết được thực hiện bởi trình bao. Tuy nhiên, đó là thiết bị đầu cuối xử lý các tổ hợp phím như Ctrl+ Cđể giết công việc tiền cảnh và Ctrl+ Ztạm dừng nó.

Tái chế từ Unix & Linux


1
Tôi phải không đồng ý với bạn về thiết bị đầu cuối là một thuật ngữ phù hợp cho tệp thiết bị đầu cuối và / hoặc mã xử lý thiết bị đầu cuối trong kernel (tty ioctls, thô / nấu, chỉnh sửa dòng cơ bản). terminal = công cụ xử lý mã thoát, biến phím nhấn thành ký tự và vẽ trên màn hình (hoặc in trên giấy / băng). Xem câu trả lời của tôi để biết thêm chi tiết.
Peter Cordes

2
@PeterCordes Ở cấp độ chi tiết này, không có sự phân biệt. POSIX định nghĩa thiết bị đầu cuối là đồng nghĩa với thiết bị đầu cuối , theo nghĩa của tệp thiết bị. Đó là ý nghĩa của Unix. Nó thực sự là công cụ hơn là xử lý mã thoát, biến phím bấm thành ký tự và vẽ trên màn hình (hoặc truyền qua mạng hoặc ghi nhật ký vào tệp, v.v.).
Gilles

2
hrm, yeah terminal cũng được sử dụng theo nghĩa đó. Với giả định rằng có một trình giả lập thiết bị đầu cuối hoặc một cổng nối tiếp với thiết bị đầu cuối được kết nối với nó, ở một đầu của thiết bị đầu cuối mà hạt nhân đang xử lý. Xử lý kernel tty (ở chế độ nấu) chỉ xử lý một vài mã điều khiển (tín hiệu trên ^ c, chỉnh sửa dòng trên ^ u / ^? (Xóa). Tôi đang cố gắng vẽ một đường giữa mã tty và một phần của Linux thực hiện một thiết bị đầu cuối giống như VT100 trên card đồ họa và bàn phím USB / ps2 / AT. Bạn có thể biên dịch Linux mà không cần điều đó, nhưng không phải không có tty.
Peter Cordes

3
@PeterCordes Trong cấu hình kernel, có thể bỏ hỗ trợ cho các thiết bị đầu cuối (nó hữu ích cho một số hệ thống nhúng hiếm có trong đó bộ nhớ cực kỳ chặt chẽ); nó được kiểm soát bởi CONFIG_TTY. Hỗ trợ cho các trình giả lập thiết bị đầu cuối (được gọi đúng hơn là các thiết bị đầu cuối giả - Trình giả lập thiết bị đầu cuối có thể không bao gồm telnetd, màn hình, mong đợi, cảm ứng) CONFIG_UNIX98_PTYS. Hỗ trợ cho màn hình văn bản PC và bàn phím hoặc tương tự được điều khiển bởi CONFIG_VT. Xem drivers/tty/Kconfigtrong nguồn kernel.
Gilles

2
Rất tiếc, tôi không có nguồn nhân gần đây nằm xung quanh. CONFIG_TTY chỉ được thêm vào năm 2012. Dù sao, vâng, hy vọng điều đó sẽ giúp bất cứ ai cố gắng quấn đầu xung quanh những mảnh ghép khác nhau và cách chúng khớp với nhau.
Peter Cordes

60

Một đại diện trực quan.

Thiết bị đầu cuối

Một cái gì đó bạn có thể ngồi xuống, và làm việc như một ông chủ.

Thiết bị đầu cuối

Bảng điều khiển

Một số phần cứng mà một loạt các công cụ.

Bảng điều khiển

Một ví dụ khác về bảng điều khiển, sẽ là bảng điều khiển trò chơi video như Super Nintendo [nơi bạn có thể chơi Actraiser]

Vỏ

Về cơ bản là một ứng dụng để chạy các lệnh.

VỏVỏ

Dòng lệnh [Giao diện]

Về cơ bản bất cứ điều gì bạn nhập lệnh vào.

CLICLI


8
Bạn đã đánh cắp ý tưởng của tôi - về cơ bản tôi sẽ đưa ra câu trả lời tương tự. Vì vậy, bạn có thể có một upvote. Tất nhiên, vấn đề là trong khi những thuật ngữ này hầu hết đồng nghĩa với những ngày này, thì các thuật ngữ như "thiết bị đầu cuối" và "bàn điều khiển" có nguồn gốc từ các khái niệm điện toán cũ.
thomasrutter

2
Nỗ lực tốt. Đơn giản và dễ dàng
Một Umar Mukthar

19

Từ Dự án Thông tin Linux :

Terminal : Về mặt kỹ thuật, Cửa sổ đầu cuối, còn được gọi là trình giả lập thiết bị đầu cuối, là cửa sổ chỉ có văn bản trong giao diện người dùng đồ họa (GUI) mô phỏng bảng điều khiển.

Theo lời của chúng tôi Một ứng dụng GUI, từ đó chúng tôi có thể truy cập bảng điều khiển của người dùng.

Bảng điều khiển : bảng điều khiển chứa các điều khiển cho máy tính

Shell : Shell là chương trình cung cấp giao diện người dùng truyền thống, chỉ có văn bản cho Linux và các hệ điều hành giống Unix khác

Dòng lệnh: Dòng lệnh là khoảng trắng ở bên phải dấu nhắc lệnh trên chế độ hiển thị toàn văn bản trên màn hình máy tính (thường là bảng CRT hoặc màn hình LCD) trong đó người dùng nhập lệnh và dữ liệu


5
"Terminal" là viết tắt của màn hình chỉ có văn bản vật lý. Những gì bạn nói thực sự là "trình giả lập thiết bị đầu cuối".
Người dùng đã đăng ký

2
@RegisteredUser Trình giả lập thiết bị đầu cuối là một loại thiết bị đầu cuối. Thiết bị đầu cuối từ không giới hạn ở thiết bị đầu cuối vật lý (từ thông thường cho đó là bàn điều khiển ).
Gilles

2
Định nghĩa về dòng lệnh này là sai. Một dòng lệnh không giới hạn ở chế độ hiển thị toàn văn bản.
Gilles

1
@Gilles Tôi đã lấy nó từ Một web-Link. Bạn đã đề cập câu trả lời thích hợp tốt.
rdʒɑ

5
@AgentCool Tôi không đặt câu hỏi về khả năng sao chép-dán của bạn. Tôi nghi ngờ sự lựa chọn của bạn về nguồn. Những gì bạn đăng là trách nhiệm của bạn, cho dù bạn đã viết nó hay không.
Gilles

15

Các câu trả lời ở đây có vẻ rất tốt. Tuy nhiên, chúng quá khô và kỹ thuật theo sở thích của tôi nên tôi sẽ dùng thử.

Terminal là sự kết thúc của một cái gì đó - nơi nó chấm dứt. Ví dụ: nếu bạn đi tàu điện ngầm ở một số thành phố, nhà ga nơi bạn xuống là nhà ga của bạn. Hoặc trong một sân bay, nơi mọi người đi ra khi đến đất nước họ được coi là nhà ga. Lý do nhà ga trong sân bay ngày nay là cả nơi bạn đưa người lên máy bay và nơi bạn đưa họ ra khỏi máy bay là vì lý do kinh tế rõ ràng.

Mục đích của máy tính là lấy dữ liệu, làm một cái gì đó với nó và đưa ra kết quả. Do đó, thiết bị đầu cuối là bất kỳ thiết bị nào từ đó bạn có thể nhận được kết quả tính toán (ví dụ như màn hình). Nó chỉ xảy ra rằng trong các máy tính đầu tiên, bạn thường có đầu vào (bàn phím) và đầu ra (màn hình) dưới dạng một thiết bị. Do đó, ngày nay các thiết bị đầu cuối được coi là bất kỳ thiết bị đầu vào / đầu ra. Một con chuột, bàn phím, màn hình, máy ảnh, chúng đều là thiết bị đầu cuối.

Shell là một điều hệ điều hành. Trên máy tính, bạn có kernel, ví dụ như trên Ubuntu là phần Linux. Bây giờ vì kernel thực sự ở mức độ thấp, một shell được cung cấp - một chương trình cho phép người dùng tương tác với kernel một cách dễ dàng. Đó là những gì BASH là ví dụ.

Bảng điều khiển là (từ điển)

một bề mặt phẳng chứa các bộ điều khiển cho máy, cho một thiết bị điện, v.v.

Đó là lý do tại sao trong ngành công nghiệp âm nhạc, bảng với tất cả các nút bấm, hoặc trong một tàu con thoi không gian, bảng lệnh, tất cả chúng đều được coi là bảng điều khiển. Super Nintendo và PS2 cũng được gọi là máy chơi game trong lịch sử kể từ khi những thiết bị giải trí đầu tiên như vậy trông giống như những chiếc hộp với một loạt các nút trên chúng.

Dòng lệnh chỉ là một giao diện - ngược lại với GUI. Cụ thể có hai loại giao diện trên máy tính; CLI (giao diện dòng lệnh) và GUI (giao diện người dùng đồ họa). Sự khác biệt chính là cái đầu tiên nhận đầu vào từ bàn phím trong khi cái thứ hai lấy đầu vào từ chuột.


1
Bạn có ý nghĩa gì "trái ngược với GUI"?
Koray Tugay

2
Ngược lại, ý tôi là bạn có CLI hoặc GUI. Tôi đã làm rõ hơn một chút trong câu trả lời.
Pithikos

12

Để tóm tắt câu trả lời của tôi:

Shell là một chương trình processesra lệnh và returnsxuất ra, giống như bash trong Linux.

Thiết bị đầu cuối là một chương trình runmột vỏ , trong quá khứ đó là một thiết bị vật lý (Trước khi thiết bị đầu cuối là màn hình với bàn phím, họ đã teletypes ) và sau đó khái niệm của nó được chuyển vào phần mềm , như Gnome-ga .

Vì vậy, tôi mở Gnome-Terminal , một cửa sổ màu đen xuất hiện chạy Shell để tôi có thể chạy các lệnh của mình.

Bảng điều khiển là một loại thiết bị đầu cuối đặc biệt , nó cũng là một thiết bị vật lý. ví dụ trong Linux, chúng ta có virtual consolethể truy cập chúng bằng cách kết hợp Ctrl+ Alt+ F1 to F7.

Bảng điều khiển đôi khi có nghĩa là bàn phím và theo dõi chất gắn liền với máy tính này.


11

Các thuật ngữ này thường đi cùng nhau, vì vậy mọi người sử dụng một trong các thuật ngữ để chỉ bộ sưu tập. (nghĩa là thường rõ ràng từ ngữ cảnh có nghĩa là một cửa sổ đầu cuối cung cấp giao diện cho trình vỏ dòng lệnh).

Để tránh điều này trở nên khó khăn, tôi sẽ nói xterm như là một phần bổ trợ cho Xterm / Gnome Terminal / Konsole / mrxvt / etc / v.v. Tương tự cho bash.

Bảng điều khiển có nhiều ý nghĩa cụ thể khác, vì vậy hãy bỏ qua ngay bây giờ.

Terminal : Thứ gì đó cung cấp sự tương tác của con người với các chương trình thông qua luồng hai chiều ASCII / UTF8 / các ký tự khác, thường là với VT100 hoặc xử lý mã thoát tương tự. (Ví dụ: xóa lùi, xóa, phím mũi tên, v.v. tạo mã thoát. Chương trình có thể in mã thoát để di chuyển con trỏ quanh màn hình thiết bị đầu cuối, chuyển sang văn bản in đậm và / hoặc màu, xóa hoặc cuộn màn hình, v.v.) ngày xưa, đây thường là một thiết bị chuyên dụng có màn hình và bàn phím và cổng nối tiếp. Bây giờ, nó thường là một chương trình như xterm.

Có các tệp thiết bị cho các chương trình đọc / ghi từ / đến thiết bị đầu cuối và thiết bị đầu cuối ảo cũng có mặt khác có thể truy cập dưới dạng tệp thiết bị. Đây là nơi xterm ghi đầu vào của bạn để bash có thể đọc nó.

Mỗi thiết bị đầu cuối, bao gồm cả thiết bị ảo, cung cấp chỉnh sửa dòng cơ bản khi ở chế độ nấu chín (trái ngược với nguyên). Điều này được xử lý bởi mã kernel. Đó là bash cung cấp chỉnh sửa dòng mà bạn có thể thực hiện với các phím mũi tên. (Hãy thử chạy catvà gõ nếu bạn muốn xem chỉnh sửa dòng cơ bản do nhân cung cấp. Backspace hoạt động và một vài thứ khác theo cài đặt stty của bạn.)

Mặc dù có rất nhiều mã hạt nhân đằng sau các thiết bị đầu cuối, nó sẽ được gọi là mã xử lý thiết bị đầu cuối, chứ không phải là một thiết bị đầu cuối.

Chỉnh sửa: Gilles đã thuyết phục tôi rằng đề cập đến một tty như một thiết bị đầu cuối là cách sử dụng đúng đắn. Trình mô phỏng đầu cuối và các chương trình tương tác chạy được kết nối với thiết bị đầu cuối, tất cả đều phụ thuộc vào ngữ nghĩa của thiết bị đầu cuối được thực hiện bởi kernel. (Hầu hết các hành vi này được chuẩn hóa bởi POSIX và giống nhau trên Linux / * BSD / Unix khác.) Trình chỉnh sửa văn bản toàn màn hình phụ thuộc vào hành vi của công cụ Unix tty cũng như xử lý mã thoát chuyển động con trỏ, và nhiều tính năng khác, của trình giả lập thiết bị đầu cuối.

Tuy nhiên, VT100 vật lý với màn hình, bàn phím và cổng nối tiếp là một phiên bản của thiết bị đầu cuối. Nó không yêu cầu nhân Unix ở đầu kia của cổng nối tiếp. Một cái gì đó hoàn toàn khác có thể gửi cho nó mã thoát và văn bản ASCII, và nhận được cùng một thứ từ nó. Tuy nhiên, nó sẽ chỉ là một VT100, không phải là một thiết bị đầu cuối Unix. Trình giả lập thiết bị đầu cuối cộng với ngữ nghĩa tty Unix tạo nên gói đầy đủ của thiết bị đầu cuối Unix mà chương trình như bash thường chạy.

Dòng lệnh là một kiểu giao diện người dùng, nơi bạn nhập một cái gì đó, sau đó nhấn return để thực hiện điều gì đó. Nó cũng được sử dụng như một cách viết tắt cho shell dòng lệnh, như bash hoặc MS-DOS, nhưng bạn cũng có thể nói rằng đây là một công cụ dòng lệnh, một thứ gì đó như fdisk. Chỉ xem xét các chương trình sử dụng thiết bị đầu cuối cho giao diện người dùng của họ, hai họ chính là dòng lệnh và văn bản toàn màn hình (ví dụ: trình soạn thảo như vi hoặc emacs -nw).

Các chương trình dòng lệnh thường chạy trên thiết bị đầu cuối hầu như vẫn luôn hoạt động với đầu vào và đầu ra được chuyển hướng đến các tệp, nhưng các chương trình toàn màn hình dựa trên thiết bị đầu cuối như trình soạn thảo hoặc ứng dụng email chỉ tương tác và sẽ không hoạt động.

Một vỏ là một chương trình để khởi động các chương trình khác. Trong ngữ cảnh Unix, nó thường có nghĩa là vỏ dòng lệnh (nghĩa là vỏ Bourne hoặc vỏ C tương đương). Các shell Unix cũng có thể đọc đầu vào của chúng từ các tệp, tức là các shell script. Chúng là các ngôn ngữ lập trình đầy đủ, với các biến, vòng lặp và điều kiện và nhiều chương trình được viết bằng bash (hoặc chỉ với /bin/shcác tính năng shell POSIX, để có tính di động cao hơn). Bạn cũng có thể dễ dàng viết nhanh for i in *.something; do some_program "$i";done trong một vỏ tương tác.

Đặt tất cả lại với nhau, một shell như bash (hoặc bất kỳ chương trình nào bạn đã bắt đầu bằng cách chạy lệnh shell) sẽ nhận được các ký tự từ /dev/pts/Nthiết bị đầu cuối sau khi xterm ghi đầu vào của bạn vào phía bên của thiết bị đầu cuối giả. Nếu bạn chạy cat, sau đó nhấn ^c, mã tty kernel sẽ tác động lên ^cvà gửi một SIGINTtiến trình nền trước trên thiết bị đầu cuối đó. (Lưu ý việc sử dụng thiết bị đầu cuốitrong ngữ cảnh này có nghĩa là Unix tty, không phải là trình giả lập thiết bị đầu cuối hoặc thứ gì đó được nối với cổng nối tiếp.) Điều này xảy ra do shell đặt thiết bị đầu cuối vào chế độ "nấu" trước khi khởi động bất kỳ chương trình nào, có nghĩa là kernel hoạt động trên một số điều khiển- trình tự. (Mã tty vẫn không liên quan gì đến việc xử lý mã thoát VT100, chỉ là một vài mã kiểm soát ASCII thấp.) Nếu thay vì xterm, bạn đang sử dụng thiết bị đầu cuối văn bản của bảng điều khiển Linux, thì hạt nhân IS đang thực hiện mô phỏng VT100 và xử lý tất cả những thứ đó. Linux có thể được biên dịch mà không cần hỗ trợ thiết bị đầu cuối văn bản ảo, nhưng không hỗ trợ tty.

Bảng điều khiển đôi khi được sử dụng làm từ đồng nghĩa cho thiết bị đầu cuối (KDE thậm chí còn có trình giả lập thiết bị đầu cuối được gọi là Konsole).

Như 0xSheepdog chỉ ra, nó cũng có một ý nghĩa khác: phần cứng tương tác giữa người với người.

Trong ngữ cảnh kernel, console có một ý nghĩa cụ thể khác: đó là thiết bị đầu cuối nơi các thông điệp khởi động được viết. Đây có thể là một cổng nối tiếp. Tất nhiên, thông thường, đó là bảng điều khiển văn bản được nhân trên kernel trình điều khiển cho phần cứng đồ họa và bàn phím USB / ps2 / AT. Nếu bạn khởi động Linux bằng console=tty0 console=ttyS0,115200n8dòng lệnh, bạn sẽ nhận được thông báo kernel trên màn hình VÀ trên cổng nối tiếp.

Linux thực hiện các bàn giao tiếp ảo ( /dev/tty1đến N ). Bạn có thể hoán đổi màn hình / bàn phím vật lý nào đang điều khiển bằng Ctrl+ Alt+ . Các bản phân phối Linux điển hình tạo 6 và bắt đầu trên tất cả chúng, vì vậy ngay cả khi bạn không thể hoặc không muốn khởi động X11, bạn có thể đăng nhập 6 lần và lật giữa một lệnh, trang man và bất cứ thứ gì khác mà không cần chạy một chương trình như màn hình. Linux (kernel) bao gồm trình giả lập thiết bị đầu cuối kiểu VT100 để cung cấp giao diện đầu cuối thông qua màn hình và bàn phím của bạn trên bảng điều khiển ảo.FNgetty

6 thiết bị đầu cuối ảo tiêu chuẩn với lời nhắc đăng nhập là lý do tại sao Ctrl+ Alt+ đưa F7bạn trở lại phiên X11: máy chủ X lấy giao diện điều khiển ảo có sẵn tiếp theo. (Tuy nhiên, máy chủ X sẽ mở /dev/input/...trực tiếp, thay vì lấy các phím bấm của bạn /dev/tty7.)

Vì vậy, "hoán đổi sang bảng điều khiển văn bản" có nghĩa là nhấn Ctrl+ Alt+ F1và sử dụng thiết bị đầu cuối đó. Quay lại khi máy tính chạy chậm và không có nhiều RAM, một số người dành phần lớn thời gian cho bảng điều khiển văn bản, vì chúng nhanh, bạn có thể đặt phông chữ đẹp và thậm chí thay đổi kích thước đầu cuối để có các ký tự nhỏ hơn, nhưng có nhiều hơn trên màn hình cùng một lúc. Alt+ LeftAlt+ Righthoán đổi sang giao diện điều khiển trước / tiếp theo. (X11 vô hiệu hóa này cho giao diện điều khiển của nó, tất nhiên, chỉ để lại Ctrl+ Alt+ combo.)FN

Vì vậy, console là một trong những thuật ngữ duy nhất không có ý nghĩa kỹ thuật được xác định rõ. Nó có một vài cái khác nhau. (Tùy thuộc vào cách bạn cảm nhận về thiết bị đầu cuối phù hợp so với thiết bị đầu cuối cộng với xử lý tty, bạn có thể nói rằng thiết bị đầu cuối cũng có nhiều ý nghĩa.)


2
Bảng điều khiển có nghĩa là thiết bị đầu cuối vật lý chính của Edward không chỉ trong bối cảnh kernel. Đó là cùng một ý nghĩa trong /dev/console. Bảng điều khiển không đặc biệt mơ hồ - mặc dù đôi khi nó được sử dụng theo nghĩa chung hơn về thiết bị đầu cuối , nhưng điều đó khá hiếm (hiếm hơn thiết bị đầu cuối được sử dụng để chỉ một giao diện điều khiển cụ thể).
Gilles

1
đúng, đúng, echo foo | sudo tee / dev / console> / dev / null sẽ in trên màn hình, nếu VT hiện tại của bạn ở chế độ văn bản (bao gồm bảng điều khiển bộ đệm khung, không chỉ là mã văn bản VGA). Nếu bạn khởi động với bàn điều khiển trên một cổng nối tiếp, tôi nghĩ nó sẽ đến đó. Bạn có thể nói rằng / dev / console nó là tập tin thiết bị cho bất cứ thứ gì mà kernel đang coi là bảng điều khiển hệ thống. Không có gì khác trong hệ thống cần phải có khái niệm về việc có một tty console nào cả (ngoại trừ công cụ phục hồi khởi động bắt đầu shell trên TTY console nếu hệ thống không khởi động được ở chế độ nhiều người dùng. Thông thường từ initrd)
Peter Cordes

1
Máy chủ xorg X (chuỗi / usr / bin / Xorg) không sử dụng / dev / console để có quyền truy cập phần cứng. Nó sử dụng / dev / tty0 và / dev / tty% d và / dev / vc /% d, để tự thiết lập trên VT của chính nó. Tôi khá chắc chắn Xorg vẫn sẽ chạy tốt trên PC khởi động với giao diện điều khiển kernel trên cổng nối tiếp. Và rằng các thiết bị đầu cuối ảo chế độ văn bản vẫn sẽ hoạt động. Tôi càng xem xét điều này, tôi càng nghiêng về việc xem bảng điều khiển trong bối cảnh kernel như một thiết bị đầu cuối đặc biệt, được chọn khi khởi động. (Linux thực sự có thể xuất các thông điệp bảng điều khiển của nó trên nhiều thiết bị đầu cuối cùng một lúc, nếu bạn yêu cầu nó.)
Peter Cordes

6

Tôi nghĩ rằng vào thời kỳ đầu của máy tính chia sẻ thời gian, mọi người dùng đều có một thiết bị đầu cuối (khi họ có thể có một thiết bị!), Nhưng chỉ các nhà khai thác hệ thống mới có bàn điều khiển. Bảng điều khiển có thể được sử dụng cho các tác vụ như khởi động lại máy hoặc nhận chẩn đoán hệ thống không thể thực hiện được từ thiết bị đầu cuối của người dùng. Bảng điều khiển nằm trong phòng máy, một bộ phận bên trong của máy tính, trong khi các thiết bị đầu cuối có thể ở xa. Bảng điều khiển cũng sẽ bao gồm đèn và phần cứng chuyển đổi, không chỉ nhập và xuất văn bản.

Tôi muốn nói rằng dòng lệnh là một khu vực nơi người dùng có thể gõ một lệnh, trong khi shell là chương trình diễn giải / tuân theo lệnh đó. Thuật ngữ "shell" rất đặc biệt đối với các dẫn xuất Unix; "Dòng lệnh" có nhiều hơn trong truyền thống Windows / DOS. Tương đương trên máy tính lớn thường được gọi là "ngôn ngữ kiểm soát công việc".

Rõ ràng, những khác biệt ban đầu đã trở nên mờ nhạt theo thời gian khi công nghệ thay đổi.


3

Thử trả lời ngắn gọn lấy người dùng làm trung tâm:

dòng lệnh - dòng nơi bạn nhập lệnh. Thông thường nó được sử dụng để nói rằng bạn cần chạy một cái gì đó trong cửa sổ chế độ văn bản (giao diện dòng lệnh) được cung cấp bởi hệ điều hành của bạn.

shell - chương trình thực tế được chạy bởi hệ điều hành để xử lý nội dung bạn nhập vào command line. Do đó, tên - vỏ thân thiện với người dùng cho lõi hệ điều hành không thân thiện. Nó cung cấp dấu nhắc lệnh, chẳng hạn như $hoặc >, chạy các lệnh và ứng dụng của riêng nó. Bạn luôn làm việc thông qua shellchương trình và không bao giờ hoạt động với bàn điều khiển hoặc thiết bị đầu cuối trực tiếp.

giao diện điều khiển - là một cửa sổ nơi các chương trình chế độ văn bản của bạn đang chạy. Cửa sổ này xử lý các phím bấm, biết nó là chiều rộng và chiều cao. Có thể toàn màn hình.

thiết bị đầu cuối - là một số thiết bị có màn hình hiển thị cho con người chấp nhận luồng ký tự đầu vào và hiển thị chúng. Không có phản hồi cho người dùng về chiều cao hoặc chiều rộng (chỉ hack) hoặc nhấn phím trên bàn phím - chỉ có các ký tự đang di chuyển đến nó. Terminal xử lý các chuỗi đặc biệt trong luồng này để làm cho mọi thứ có màu, làm sạch màn hình và làm những việc khó chịu khác. Thiết bị đầu cuối rất dễ hỏng, bởi vì nó rất dễ làm hỏng mọi thứ nếu tệp bạn đang chuyển đến đầu ra có chứa các chuỗi đặc biệt đó. Chúng phổ biến trong các giao diện gỡ lỗi mạng và thiết bị, bởi vì bạn chỉ cần một luồng duy nhất để gửi đầu ra và điều khiển thiết bị đầu ra và bạn có thể chỉ cần taptrò chuyện mà không cần phải khởi tạo hoặc tạo cửa sổ.

bàn điều khiển nối tiếp - là bàn điều khiển xử lý luồng đầu vào như thiết bị đầu cuối.


3

Đây là một chủ đề mơ hồ, bởi vì các điều khoản rất mơ hồ. Tôi thực sự khuyên bạn nên đọc các liên kết tôi đã cung cấp trong suốt câu trả lời này, đây cũng là nguồn của tôi cho câu trả lời này.

Một lớp vỏ là lớp bên trên kernel:

  • Nó diễn giải các lệnh được nhập bởi người dùng và xử lý chúng. Shell có quyền truy cập vào kernel, không giống như người dùng. Người dùng chỉ có thể truy cập kernel thông qua việc nhập lệnh bằng shell và bằng cách sử dụng các quy trình (tức là đang chạy chương trình). Các chương trình sử dụng các cuộc gọi hệ thống để truy cập chức năng kernel. Tất cả các hệ thống gọi nhau tạo thành API hệ thống.
  • Ví dụ về shell được đưa ra trong định nghĩa thiết bị đầu cuối thứ hai.

Một thiết bị đầu cuối có nhiều ý nghĩa:

  • (1) Một thiết bị đầu cuối văn bản . Đây là sự kết hợp giữa màn hình hiển thị và bàn phím. Một cáp kết nối thiết bị đầu cuối với máy tính (thường là gián tiếp). Nó được gọi là thiết bị đầu cuối vì nó được đặt ở đầu cuối của cáp này. Các thiết bị đầu cuối này thường được tách biệt khỏi máy tính, bởi vì vào thời trước, nhiều thiết bị đầu cuối được kết nối với một máy tính lớn / máy tính, do đó nhiều người dùng có thể truy cập vào máy tính cùng một lúc.
  • (2) Một cửa sổ đầu cuối hay còn gọi là trình giả lập thiết bị đầu cuối . Trong Linux, một cửa sổ đầu cuối là mô phỏng của bàn điều khiển, có trong cửa sổ GUI. Đó là CLI bạn nhập văn bản của bạn và đầu vào này được đọc bởi trình bao bạn đang sử dụng. Có nhiều loại shell (ví dụ bash, dash, ksh88) và terminal (ví dụ: konsole, gnome).
  • (3) Để được giải thích về thiết bị đầu cuối giả , xem điều này . Đó là một cặp gồm hai 'tệp thiết bị' được sử dụng để liên lạc giữa một quá trình và trình giả lập thiết bị đầu cuối.

Một giao diện điều khiển có nhiều ý nghĩa:

  • (1) bảng điều khiển chứa các điều khiển cho máy tính.
  • (2) Bảng điều khiển hệ thống hay còn gọi là bảng điều khiển máy tính . Đây là sự kết hợp giữa màn hình hiển thị và bàn phím được kết nối với máy tính. Điều này đồng nghĩa với những gì chúng ta gọi là "thiết bị đầu cuối văn bản". Đôi khi, các thiết bị ngoại vi đầu vào người dùng khác như chuột là một phần của bàn điều khiển.
  • (3) Giao diện dòng lệnh bao trùm toàn màn hình. Điều này trái ngược với cửa sổ terminal, là GUI có X ở góc trên cùng bên phải để đóng nó. Đây là hai chế độ hiển thị cho CLI (giao diện dòng lệnh) trong các hệ thống giống Unix. Tương tự như cửa sổ terminal, giao diện điều khiển cũng có thể chạy nhiều shell.

Thông thường, các hệ điều hành cho phép bạn chạy nhiều bảng điều khiển trên bàn điều khiển vật lý (định nghĩa bàn điều khiển 2). Chúng được gọi là virtual console aka thiết bị đầu cuối ảo , và có thể được truy cập thông qua ctrl+ alt+ Fxkết hợp. Ví dụ: nếu bạn muốn mở bảng điều khiển ảo thứ 3, bạn sử dụng kết hợp ctrl+ alt+ F3.

Các bảng điều khiển (định nghĩa 3) có thể xuất hiện với bạn dưới dạng lỗi thời, nhưng các chuyên gia nên thoải mái sử dụng chúng, vì có nhiều hệ điều hành không hỗ trợ GUI. Ngoài ra, nếu GUI ngừng phản hồi, bàn điều khiển vẫn có thể hoạt động.


2

Hầu hết các thiết bị đầu cuối hiện nay đều nói đúng các trình giả lập thiết bị đầu cuối . Nó là một loại vai trò trong hoạt động của một hệ thống giống như UNIX và đồng thời giao diện cơ bản được cung cấp bởi các hệ thống. Trong thực tế, tất cả mọi thứ, bao gồm cả GUI được xây dựng trên nó.
Thông thường "thiết bị đầu cuối" cũng có thể đề cập đến các điểm cuối trong mạng máy tính có địa hình sao.

Bảng điều khiển đề cập đến các giao diện (phần cứng) cho các thiết bị đầu cuối. Tức là có các bảng điều khiển nối tiếp và ngày nay chủ yếu là ảo .
Cửa sổ thông thường được gọi là "bàn điều khiển" -how là một vỏ, được kết nối với một thiết bị đầu cuối của hệ thống, thông qua một bàn điều khiển ảo.

Ngày trước khi máy tính đắt tiền, một cơ sở có thể đã có một máy tính thực tế và một số thiết bị đầu cuối kết nối với nó, thông qua cáp nối tiếp ("bàn điều khiển nối tiếp"). Hệ điều hành, hoạt động, v.v. được thực hiện trên Máy tính vật lý, đầu vào và đầu ra xảy ra trên (các) bàn điều khiển.
Bạn có thể chuyển đổi giữa các thiết bị đầu cuối ảo bằng cách nhấn CTRL+ ALT+ F1(thông qua F6): phần còn lại của những thời điểm đó.
Ngày nay, khái niệm "khách hàng mỏng" quay trở lại theo hướng tập trung lượng tài nguyên khổng lồ và cung cấp phần cứng vừa đủ để cung cấp giao diện hiện đại tại nơi làm việc thực tế.

shell là "động cơ" mà bạn nhìn thấy trong thiết bị đầu cuối. Nó cung cấp interop với chính hệ thống và thêm các tính năng hay như tự động hoàn thành, các biến, v.v.
Nó dịch qua lại giữa HĐH / kernel thực sự sử dụng các cuộc gọi hệ thống và bạn. Các cuộc gọi hệ thống w / o shell giống như mã hóa assemblervà shell ít nhất cung cấp cho bạn C.

dòng lệnh đề cập đến phương pháp trao đổi đầu vào và đầu ra thông qua cửa sổ văn bản. Nói đúng ra dòng trong đó bạn gõ là các (hiện tại) dòng lệnh. Phương thức nói chung được gọi chính xác hơn là giao diện dòng lệnh hoặc CLI.

  1. hạt nhân
  2. cung cấp thiết bị đầu cuối
  3. thiết bị đầu cuối được kết nối thông qua một bàn điều khiển
  4. giao diện điều khiển chạy vỏ
  5. các lệnh và đầu ra được trao đổi thông qua dòng lệnh (giao diện)

1
Hướng dẫn dòng lệnh không được hiểu bởi kernel, mà bằng shell. Khung hướng dẫn cốt lõi của các hướng dẫn mà kernel hiểu được sẽ là các cuộc gọi hệ thống. Giao diện dòng lệnh UNIX cơ bản của UNIX là một hệ vỏ, không có sự tách biệt giữa điều đó và các tính năng tốt đẹp của YouTube. Một thiết bị đầu cuối-trình giả lập-cửa sổ khác không phải là bàn điều khiển.
Gilles

1
@Gilles điều chỉnh. Rõ ràng là nhầm lẫn một số điều bản thân mình ở đó.
Đánh dấu
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.