Яка різниця між терміналом, консоллю, оболонкою та командним рядком?


211

Яка різниця між терміналом, консоллю, оболонкою та командним рядком?


1
(1/2) Агент Cool в основному правильний, але визначення консолі, яку він надає, є застарілим, враховуючи цю тему. Його посилання містить правильну інформацію, якщо ви йдете за нею. Прочитайте все визначення за його посиланням. Консоль використовується вільно, щоб означати безліч подібних речей, але найголовніше, як правило, це стосується пристроїв для введення та виведення МІСЬКОГО ВІДПОВІДА, наприклад клавіатури, дисплея та, можливо, миші.
0xШепдог

1
(2/2) Це може здатися педантичним моментом, але як досвідчений системний адміністратор, я скажу вам, що це не так . Якщо в системі є проблеми і, здається, повністю вийшов з ладу / вниз / офлайн, вам слід перевірити фізичну консоль системи, щоб побачити, чи вона все ще функціонує, але просто втрачена мережа. Ця невелика деталь може заощадити або коштувати вам даних, обробки інформації тощо. Педантично, так. Але важливо.
0xШепдог

6
@ 0xSheepdog Ви можете розширити ці коментарі до повної відповіді (включаючи визначення та пояснення для інших термінів також), розміщеної як такої. Непогано, щоб на запитання було кілька відповідей (за винятком можливо, коли вони передають однакову інформацію та однаково). Я не впевнений, чому важлива практика перевірки машини на місцевості насправді покладається на те, щоб знати / називати його фізичний інтерфейс людини консоллю, але, можливо, є аргумент, що це важливо для ефективної комунікації з колегами або використання документації. (Ви можете уточнити це у своїй відповіді.)
Ілля Каган

4
Завдяки їхньому тісному зв’язку (див. Всі хороші відповіді), ці терміни часом використовуються синонімічно, що, ймовірно, змусило вас запитати це.
Марк

Відповіді:


143

Коротка відповідь:

  • terminal = середовище введення / виводу тексту
  • консоль = фізичний термінал
  • shell = інтерпретатор командного рядка

Довга відповідь:

Консоль і термінал тісно пов'язані. Спочатку вони означали обладнання, за допомогою якого ви могли взаємодіяти з комп'ютером: в перші дні Unix це означало пристрій телепринтера, що нагадує друкарську машинку, яку іноді називають телерайт-машинописом, або "tty" в короткому руці. Назва "термінал" прийшла з електронної точки зору, а назва "консоль" з меблевої точки зору. Дуже рано в історії Unix електронні клавіатури та дисплеї стали нормою для терміналів.

Термінал

У термінології Unix термінал - це певний тип файлів пристроїв, який реалізує ряд додаткових команд ( йоктлів ) поза читанням і записом . Деякі термінали надаються ядром від імені апаратного пристрою, наприклад, на вході, що надходить з клавіатури, і на виході, що надходить на екран текстового режиму, або вхід і вихід передаються через послідовну лінію. Інші термінали, які іноді називають псевдотерміналами або псевдотерміналами, забезпечуються (через тонкий шар ядра) програмами, які називаються емуляторами терміналів . Деякі типи термінальних емуляторів включають:

  • GUI-програми, що працюють у системі X Window : Xterm , Gnome Terminal, Konsole, Terminator і т.д.
  • Екран і tmux , який забезпечує прошарок ізоляції між програмою та іншим терміналом
  • Ssh , який з'єднує термінал на одній машині з програмами на іншій машині
  • Очікуйте на сценарій взаємодії терміналів

Слово термінал може також мати традиційне значення пристрою, за допомогою якого взаємодіють із комп'ютером, як правило, з клавіатурою та дисплеєм. Наприклад, термінал X - це якийсь тонкий клієнт , комп'ютер спеціального призначення, єдиною метою якого є керування клавіатурою, дисплеєм, мишкою та інколи іншими периферійними пристроями для взаємодії з людиною, а фактичні програми працюють на іншому, більш потужному комп'ютері.

Консоль

Консоль , як правило , термінал в фізичному сенсі , що будь - то визначення основного термінал підключений безпосередньо до машини. Консоль видається операційній системі у вигляді терміналів (реалізованих у ядрі). У деяких системах, таких як Linux та FreeBSD, консоль з'являється у вигляді декількох терміналів (ttys) (спеціальні комбінації клавіш перемикаються між цими терміналами); щоб заплутати питання, ім'я, яке надається кожному конкретному терміналу, може бути "консоль", "віртуальна консоль", "віртуальний термінал" та інші варіанти.

Дивіться також Чому віртуальний термінал є "віртуальним", а що / чому / де "справжнім" терміналом? .

Командний рядок [інтерфейс]

Командний рядок являє собою інтерфейс , в якому користувач вводить команду (яка виражається у вигляді послідовності символів - зазвичай ім'я команди з подальшим деякими параметрами) і натискає Returnкнопку , щоб виконати цю команду.

Оболонка

Оболонка є основним інтерфейсом , який користувачі бачать , коли вони увійти, чия основна мета полягає в тому, щоб запускати інші програми. (Я не знаю, чи оригінальна метафора полягає в тому, що оболонка є домашнім середовищем для користувача, або що оболонка - це те, в чому запущені інші програми.)

У колах Unix оболонка спеціалізується на тому, щоб означати оболонку командного рядка , зосереджену навколо введення імені програми, яку потрібно запустити, а потім імена файлів або інших об'єктів, над якими повинна діяти програма, та натискання клавіші Enter. Інші типи середовищ (за винятком недавнього винятку Gnome Shell) зазвичай не використовують слово "оболонка"; наприклад, віконні системи включають в себе " менеджери вікон " та " середовища робочого столу ", а не "оболонку".

Існує багато різних оболонок Unix. Оболонка Ubuntu за замовчуванням - Bash (як і більшість інших дистрибутивів Linux). До популярних альтернатив можна віднести zsh (який підкреслює потужність та налаштованість) та fish (що підкреслює простоту).

Оболонки командного рядка містять конструкції управління потоком для об'єднання команд. Окрім введення команд в інтерактивному рядку, користувачі можуть писати сценарії. Найбільш поширені оболонки мають загальний синтаксис, заснований на Bourne_shell . Обговорюючи " програмування оболонок ", оболонка майже завжди має на увазі як оболонку в стилі Борна. Деякі оболонки, які часто використовуються для сценаріїв, але не мають вдосконалених інтерактивних функцій, включають оболонку Корна (кш) та багато варіантів золи . Практично будь-яка система, схожа на Unix, має встановлену оболонку в стилі Борна як /bin/sh, як правило, зола, ksh або bash. У Ubuntu - /bin/shце Dash , зольний варіант (вибраний тому, що він швидший і використовує менше пам'яті, ніж bash).

У системному адмініструванні Unix оболонка користувача - це програма, яка викликається при вході в систему. Звичайні облікові записи користувачів мають оболонку командного рядка, але користувачі з обмеженим доступом можуть мати оболонку з обмеженим доступом або якусь іншу конкретну команду (наприклад, для передачі файлів -тільки рахунки).


Розподіл праці між терміналом і оболонкою не є абсолютно очевидним. Ось їх основні завдання.

  • Вхід: термінал перетворює клавіші в керуючі послідовності (наприклад, Left\e[D). Оболонка перетворює керуючі послідовності в команди (наприклад, \e[Dbackward-char).
  • Видання рядка, історія введення та завершення надаються оболонкою.
    • Термінал може надати власне видання рядка, історію та завершення, а також надсилати рядок до оболонки лише тоді, коли вона буде готова до виконання. Єдиний загальний термінал, який працює таким чином, - це M-x shellEmacs.
  • Вихід: оболонка випромінює такі інструкції, як "дисплей foo", "перехід кольору переднього плану на зелений", "переміщення курсору в наступний рядок" і т. Д. Термінал діє за цими інструкціями.
  • Підказка - це суто концепція оболонки.
  • Оболонка ніколи не бачить вихід команд, які вона виконує (якщо не буде переспрямовано). Історія виводу (прокрутка) - це суто термінальна концепція.
  • Копіювальна паста між додатками надається терміналом (як правило, за допомогою миші або послідовностей клавіш, таких як Ctrl+ Shift+ Vабо Shift+ Insert). Оболонка може мати власний внутрішній механізм копіювання-вставки (наприклад, Meta+ Wі Ctrl+ Y).
  • Контроль за роботою (запуск програм у фоновому режимі та управління ними) здебільшого виконується оболонкою. Однак це термінал, який обробляє комбінації клавіш, як Ctrl+, Cщоб убити роботу переднього плану та Ctrl+ Zпризупинити його.

Перероблено від Unix & Linux


1
Мені доведеться не погодитись з вами, що термінал є належним терміном для файлу термінального пристрою та / або коду обробки терміналу в ядрі (tty ioctls, raw / kuhaне, редагування основних рядків). terminal = матеріал, який обробляє вхідні коди, перетворює натискання клавіш на символи та малює на екрані (або друкує на папері / стрічці). Дивіться мою відповідь для отримання більш детальної інформації.
Пітер Кордес

2
@PeterCordes На цьому рівні деталізації немає відмінності. POSIX визначає термінал як синонім термінального пристрою у значенні файлу пристрою. Це значення Unix. Це трапляється з речей, ніж обробляє коди евакуації, перетворює натискання клавіш на символи та малює на екрані (або передає по мережі, або входить у файл тощо).
Жиль

2
хрм, так, термінал теж використовується в цьому сенсі. З припущенням, що на одному кінці термінального пристрою, яким керує ядро, є емулятор терміналу або послідовний порт із підключеним до нього кінцевим пристроєм. Обробка ядра tty (у приготовленому режимі) обробляє лише кілька керуючих кодів (сигнали на ^ c, редагування рядків на ^ u / ^? (Видалення). Я намагаюся провести лінію між кодом tty та частиною Linux який реалізує термінал, схожий на VT100 на графічній карті та клавіатурі USB / ps2 / AT. Можна компілювати Linux без цього, але не без тти.
Пітер Кордес,

3
@PeterCordes У конфігурації ядра підтримка терміналів може бути залишена (це корисно для деяких рідкісних вбудованих систем, де пам'ять надзвичайно обмежена); це контролюється CONFIG_TTY. Підтримка емуляторів терміналів (правильніше називати псевдотерміналами - "термінальний емулятор" не завжди включає telnetd, екран, очікувати, ...) контролюється CONFIG_UNIX98_PTYS. Підтримка дисплея текстового режиму ПК та клавіатури тощо допомагає CONFIG_VT. Дивіться drivers/tty/Kconfigу джерелі ядра.
Жиль

2
На жаль, у мене не було недавнього джерела ядра. CONFIG_TTY був доданий лише у 2012 році. Так чи інакше, сподіваємось, це допомагає кожному, хто намагається обернути голову навколо того, якими є різні фрагменти головоломки та як вони поєднуються разом.
Пітер Кордес

60

Візуальне уявлення.

Термінал

Щось, за що ти можеш сісти і працювати, як начальник.

Термінал

Консоль

Деяке обладнання, яке робить купу матеріалів.

Консоль

Іншим прикладом консолі може бути відеоігрова консоль, така як Super Nintendo [де ви можете грати в Actraiser]

Оболонка

В основному додаток для запуску команд.

ОболонкаОболонка

Командний рядок [інтерфейс]

В основному все, що ви вводите команди.

CLICLI


8
Ви вкрали мою ідею - я збирався дати в основному таку ж відповідь. Таким чином, ви можете мати нагороду. Зрозуміло, що в даний час ці терміни здебільшого є синонімами, такі терміни, як "термінал" та "консоль", мають своє походження в старих обчислювальних поняттях.
thomasrutter

2
Гарна спроба. Просто і легко
A Umar Mukthar

19

З інформаційного проекту Linux :

Термінал : Технічно термінальне вікно, яке також називається емулятором терміналу, є текстовим вікном у графічному інтерфейсі користувача (GUI), що імітує консоль.

Нашими словами, додаток GUI, звідки ми можемо отримати доступ до консолі користувача.

Консоль : панель приладів, що містить елементи керування для комп'ютера

Shell : оболонка - це програма, яка забезпечує традиційний, лише текстовий інтерфейс користувача для Linux та інших Unix-подібних операційних систем

Командний рядок : командний рядок - це простір праворуч від командного рядка в режимі повнотекстового відображення на моніторі комп'ютера (зазвичай це ЕПТ або РК-панель), куди користувач вводить команди та дані


5
"Термінал" означає фізичний екран лише для тексту. Те, що ви говорите, насправді "термінальний емулятор".
Зареєстрований користувач

2
@RegisteredUser Емулятор терміналу є своєрідним терміналом. Слово термінал не обмежується фізичними терміналами (звичайне слово для цього - консоль ).
Жиль

2
Це визначення командного рядка неправильне. Командний рядок не обмежується повнотекстовим режимом відображення.
Жиль

1
@Gilles Я схопив це з однієї веб-посилання. Ви згадали про правильну відповідь.
rɑːdʒɑ

5
@AgentCool Я не сумніваюся у вашій здатності копіювати та вставляти. Я сумніваюся у виборі джерела. Що ви публікуєте - це ваша відповідальність, незалежно від того, написали ви це чи ні.
Жил

15

Відповіді тут здаються дуже хорошими. Однак вони занадто сухі і технічні на мій смак, тому я задумаюся.

Термінал - це кінець чогось - там, де він припиняється. Наприклад, якщо ви їдете в метро в якомусь місті, станція, куди ви спускаєтесь, - ваш термінал. Або в аеропорту місце, куди люди виїжджають, коли доїдуть до країни призначення, вважається терміналом. Причина, що зараз термінал в аеропорту - це як місце, де ви отримуєте людей на борту, так і місце, де ви вивозите їх з літака, з очевидних економічних причин.

Мета комп'ютера - отримати дані, зробити щось із ним і виплюнути результат. Таким чином, термінал - це будь-який пристрій, з якого можна отримати результат обчислення (наприклад, екран). Так сталося, що на перших комп'ютерах у вас зазвичай був вхід (клавіатура) і вихід (екран) як один пристрій. Через це в даний час терміналами вважаються будь-які пристрої введення / виводу. Миша, клавіатура, екран, камера, все це термінали.

Shell - річ з ОС. На комп'ютері у вас є ядро, яке, наприклад, на Ubuntu, є частиною Linux. Оскільки ядро ​​справді низького рівня, надається оболонка - програма, яка дозволяє користувачеві взаємодіяти з ядром простим способом. Це, наприклад, BASH.

Консоль - це (зі словника)

рівна поверхня, яка містить елементи управління для машини, для шматка електричного обладнання тощо.

Ось чому в музичній індустрії дошки з усіма ручками, або в космічному човнику командний стіл, всі вони вважаються консолями. Супер Nintendo та PS2 також історично називаються консолями, оскільки перші подібні розважальні пристрої були схожі на коробки з купою на них кнопок.

Командний рядок - це просто інтерфейс - протилежний GUI. А саме є два типи інтерфейсів на комп’ютері; CLI (інтерфейс командного рядка) та GUI (графічний інтерфейс користувача). Основна відмінність полягає в тому, що перша отримує введення з клавіатури, а друга отримує введення миші.


1
Що ви маєте на увазі "протилежність GUI"?
Корай Тугай

2
Я маю на увазі, що у вас є або CLI, або GUI. Я зараз уточнив трохи більше у відповіді.
Пітікос

12

Підводячи підсумки моєї відповіді:

Shell - програма, яка processesкомандує та returnsвиводить, як bash в Linux.

Термінал - це програма, що runмає оболонку , раніше вона була фізичним пристроєм (раніше термінали були моніторами з клавіатурами, вони були телетипами ), а потім її концепція була передана в програмне забезпечення , як Gnome-Terminal .

Тож я відкриваю Gnome-Terminal , з'являються чорні вікна, які запускають Shell, щоб я міг запускати свої команди.

Консоль - це особливий вид терміналу , він також був фізичним пристроєм. Наприклад, у Linux ми маємо virtual consoleдоступ до них за допомогою комбінації Ctrl+ Alt+ F1 to F7.

Консоль іноді означає клавіатуру та монітор, фізично прикріплені до цього комп'ютера.


11

Ці терміни часто йдуть разом, тому люди використовують один із термінів для позначення колекції. (тобто з контексту зазвичай очевидно, що вони означають вікно терміналу, що забезпечує інтерфейс до оболонки командного рядка).

Щоб це не дісталося до довготермінових, я просто збираюся сказати xterm як резервний термін для XTerm / Gnome Terminal / Konsole / mrxvt / і т.д. / тощо. Те саме для bash.

Консоль має кілька інших специфічних значень, тому покиньте це поки що.

Термінал : те, що забезпечує взаємодію людини з програмами через двонаправлений потік ASCII / UTF8 / інших символів, як правило, з VT100 або подібною обробкою аварійного коду. (Наприклад, зворотний простір, видалення, клавіші зі стрілками і т. Д. Генерують евакуаційні коди. Програми можуть друкувати коди евакуації для переміщення курсору по екрану терміналу, переходу на жирний текст та / або кольоровий колір, очищення екрана та прокручування тощо). За старих часів, це часто був спеціальний прилад із екраном та клавіатурою та послідовним портом. Зараз це, як правило, така програма, як xterm.

Існують файли пристроїв для програм для читання / запису з / до терміналів, а віртуальні термінали також мають іншу сторону, доступну як файл пристрою. Тут xterm пише ваш вклад, щоб bash міг його прочитати.

Кожен термінал, включаючи віртуальний, забезпечує основне редагування рядків, коли він перебуває у приготовленому (на відміну від сировинному) режимі. Це обробляється кодом ядра. Це bash, що забезпечує редагування рядків, яке ви можете робити за допомогою клавіш зі стрілками. (Спробуйте запустити catі ввести, якщо ви хочете побачити, як виглядає основне редагування рядків, розміщених у ядрі. Працює Backspace та ще кілька речей відповідно до ваших налаштувань stty.)

Незважаючи на те, що за термінальними пристроями є дуже багато коду ядра, це вважатиметься кодом обробки терміналів, а не як самим терміналом.

Редагувати: Жилль переконав мене, що посилатися на tty як на термінал - це правильне використання. Емулятори терміналів та інтерактивні програми, які працюють підключені до терміналу, залежать від семантики термінала, реалізованої ядром. (Більшість такої поведінки стандартизована POSIX, і однакова в Linux / * BSD / інших Unix.) Повноекранний текстовий редактор залежить від поведінки матеріалів Unix, а також від обробки втеченого коду переміщення курсору, та багато інших функцій емулятора терміналу.

Однак фізичний VT100 з екраном, клавіатурою та послідовним портом є екземпляром терміналу. Для цього не потрібно, щоб ядро ​​Unix на іншому кінці його послідовного порту було повно. Щось зовсім інше могло б надсилати йому коди евакуації та текст ASCII та отримувати від них те саме. Це був би просто VT100, але не термінал Unix. Емулятор терміналу плюс семантика Unix tty складають повний пакет терміналу Unix, на який зазвичай працює така програма, як bash.

Командний рядок - це стиль інтерфейсу користувача, де ви щось набираєте, а потім натискаєте return, щоб щось сталося. Він також використовується як скорочення для оболонки командного рядка, як bash або MS-DOS, але ви також можете сказати "це інструмент командного рядка" про щось на зразок fdisk. Беручи до уваги лише програми, які використовують термінал для свого інтерфейсу, дві основні сімейства - це командний рядок та текст на весь екран (наприклад, редактор типу vi або emacs -nw).

Програми командного рядка, які зазвичай працюють на терміналах, майже завжди працюють із входом і виходом, переспрямованими на файли, але повноекранні програми на основі терміналів, такі як редактори або клієнти електронної пошти, є лише інтерактивними і не працюватимуть.

Оболонка є програмою для запуску інших програм. У контексті Unix прийнято означати оболонку командного рядка (тобто оболонку Bourne або еквівалент C shell). Оболонки Unix також можуть читати свої дані з файлів, тобто скриптів оболонок. Вони є повноцінними мовами програмування, зі змінними, циклами та умовними умовами, і багато програм написані в bash (або лише з /bin/shфункціями оболонки POSIX, для більшої портативності). Також легко можна швидко написати for i in *.something; do some_program "$i";done в інтерактивній оболонці.

Збираючи все це разом, оболонка типу bash (або будь-яка програма, яку ви запустили, запустивши команду shell) отримає символи від /dev/pts/Nтермінального пристрою після того, як xterm запише ваш вхід у свою сторону псевдотерміналу. Якщо ви запустите cat, а потім натисніть ^c, код ядра tty діятиме на ^cі відправить SIGINTна передній план процесу на цьому терміналі. (Зверніть увагу на використання терміналув цьому контексті мається на увазі Unix tty, а не емулятор терміналу або щось підключене до послідовного порту.) Це відбувається тому, що оболонка переводить термінал у режим «приготування» перед запуском будь-якої програми, а це означає, що ядро ​​діє на деякий контроль, послідовності. (Код tty все ще не має нічого спільного з обробкою кодів виходу VT100, лише декілька кодів керування з низьким вмістом ASCII.) Якщо замість xterm, ви використовуєте текстовий термінал консолі Linux, то ядро ​​виконує емуляцію VT100, і поводження з усіма цими речами. Linux можна компілювати без підтримки текстових терміналів віртуальної консолі, але не без підтримки tty.

Консоль іноді використовується як синонім терміналу (у KDE навіть є емулятор терміналу під назвою Konsole).

Як вказує 0xSheepdog, він також має інше значення: локально прикріплене обладнання для взаємодії з людиною.

У контексті ядра консоль має ще одне конкретне значення: це термінал, куди записуються повідомлення про завантаження. Це може бути послідовний порт. Звичайно, звичайно, це текстова консоль, реалізована ядром поверх драйверів для графічного обладнання та клавіатур USB / ps2 / AT. Якщо ви завантажите Linux console=tty0 console=ttyS0,115200n8в командному рядку, ви отримаєте повідомлення ядра на екрані ТА на послідовному порту.

Linux реалізує віртуальні консолі ( /dev/tty1до N ). Ви можете поміняти місцями, на якому фізичним екраном / клавіатурою керує Ctrl+ Alt+ . Типові дистрибутиви Linux створюють 6 та починають усі, так що навіть якщо ви не можете чи не хочете запускати X11, ви можете увійти в систему 6 разів та переходити між командою, сторінкою "man" та будь-чим іншим, без цього запуск такої програми, як екран. Linux (ядро) включає емулятор терміналів у стилі VT100 для забезпечення термінального інтерфейсу через ваш екран та клавіатуру на віртуальних консолях.FNgetty

Стандартні 6 віртуальних терміналів з підказками для входу є тим, чому Ctrl+ Alt+ F7повертає вас до вашого сеансу X11: сервер X захоплює наступну доступну віртуальну консоль. (Хоча X-сервер відкривається /dev/input/...безпосередньо, замість того, щоб отримувати натискання клавіш /dev/tty7.)

Отже, "поміняти на текстову консоль" означає натиснути Ctrl+ Alt+ F1та використовувати цей термінал. Ще коли комп’ютери були повільними і не мали багато оперативної пам’яті, деякі люди витрачали значну частину свого часу на текстові консолі, оскільки вони були швидкими, ви можете встановити гарний шрифт і навіть змінити розмір терміналу, щоб мати менші символи, але мати більше на екрані відразу. Alt+ Leftта Alt+ Rightпоміняти на консоль prev / next. (X11 відключає це для своєї консолі, звичайно, залишаючи лише комбо Ctrl+ Alt+ .)FN

Отже консоль - єдиний із цих термінів, який не має єдиного чітко визначеного технічного значення. У ньому є пара різних. (Залежно від того, як ви ставитесь до належного терміналу порівняно з терміналом плюс tty поводження, ви можете сказати, що термінал також має декілька значень.)


2
Консоль, що означає "головний" фізичний термінал, не тільки в контексті ядра. Це те саме значення в /dev/console. Консоль не особливо неоднозначна - хоча вона іноді використовується в більш загальному сенсі терміналу , це досить рідко (рідше, ніж термінал використовується конкретно для консолі).
Жиль

1
правильно, так, відлуння | sudo tee / dev / console> / dev / null друкується на екрані, якщо ваш поточний VT знаходиться в текстовому режимі (включаючи консоль framebuffer, а не буквально VGA textmode). Якщо ви завантажилися з консолі на послідовний порт, я думаю, це піде туди. Можна сказати, що / dev / console це файл пристрою для будь-якого ядра, яке трактується як системна консоль. Ніщо інше в системі не повинно мати уявлення про те, чи існує консоль tty взагалі (за винятком файлів відновлення завантаження, який запускає оболонку на консолі TTY, якщо система не завантажується в багатокористувацький режим. Зазвичай з initrd)
Пітер Кордес

1
Сервер xorg X (strings / usr / bin / Xorg) не використовує / dev / console для отримання апаратного доступу. Він використовує / dev / tty0, і / dev / tty% d, і / dev / vc /% d, щоб налаштувати себе на власний VT. Я впевнений, що Xorg як і раніше буде працювати на ПК, який завантажується з консолі ядра на послідовний порт. І що віртуальні термінали в текстовому режимі все одно працюватимуть. Чим більше я вважаю це, тим більше я схиляюся до перегляду консолі в контексті ядра як просто спеціального терміналу, вибраного під час завантаження. (Linux насправді може виводити свої консольні повідомлення відразу на декілька терміналів, якщо ви попросите це.)
Пітер Кордес

6

Я думаю, що ще в перші часи роботи з комп'ютерами, що ділилися часом, кожен користувач мав термінал (коли міг отримати його!), Але консоль мали лише системні оператори. Консоль може використовуватися для таких завдань, як перезавантаження машини або отримання системної діагностики, яка була неможлива з терміналів користувача. Консоль знаходилася в машинному залі, невід'ємна частина комп'ютера, тоді як термінали могли бути віддаленими. Консоль також міститиме апаратні світильники та вимикачі, а не лише введення та виведення тексту.

Я б сказав, що командний рядок - це область, де користувач може вводити команду, тоді як оболонка - це програма, яка інтерпретує / підкоряється цій команді. Термін "оболонка" дуже специфічний для похідних Unix; "командний рядок" більше в традиції Windows / DOS. Еквівалент у мейнфреймах зазвичай називають "мовою контролю роботи".

Зрозуміло, що ці оригінальні розрізнення з часом розмиваються в міру зміни технологій.


3

Спроба короткої відповіді, орієнтованої на користувача:

командний рядок - рядок, куди ви вводите команди. Зазвичай він говорив про те, що потрібно запустити щось у вікні текстового режиму (інтерфейс командного рядка), наданий вашою операційною системою.

shell - фактична програма, запущена операційною системою для обробки матеріалів, які ви вводите command line. Звідси і назва - зручна оболонка для недружнього ядра ОС. Він надає командний рядок, такий як, $або >виконує власні команди та програми. Ви завжди працюєте через shellпрограму і ніколи не працюєте безпосередньо з консоллю або терміналом.

консоль - це вікно, де працюють ваші текстові програми. Це вікно обробляє натискання клавіш, знає, що це ширина та висота. Може бути повноекранним.

термінал - це деякий пристрій з відображенням для людей, який приймає вхідний потік символів і показує їх. Користувача немає відгуків про висоту або ширину (лише хакі) або натискання клавіш на клавіатурі - до нього подорожують лише символи. Термінал обробляє спеціальні послідовності в цьому потоці, щоб зробити кольори кольорами, очистити екран і зробити інші неприємні речі. Термінали лускають, тому що легко зіпсувати речі, якщо файл, який ви пересилаєте для виводу, містить ці спеціальні послідовності. Вони популярні в мережевих інтерфейсах та інтерфейсах налагодження пристроїв, тому що вам просто потрібен єдиний потік для надсилання виводу та керування пристроєм виводу, і ви можете просто tapвести розмову без необхідності ініціалізації чи створення вікна.

serial console - це консоль, яка обробляє вхідний потік як термінал.


3

Це невиразна тема, адже терміни дуже неоднозначні. Я настійно рекомендую прочитати посилання, які я надав протягом цієї відповіді, які також є моїми джерелами для цієї відповіді.

Оболонка являє собою шар над ядром:

  • Він інтерпретує команди, введені користувачем, та обробляє їх. Оболонка має доступ до ядра, на відміну від користувачів. Користувачі можуть отримати доступ до ядра лише за допомогою введення команд за допомогою оболонки та за допомогою процесів (тобто запуску програм). Програми використовують системні виклики для доступу до функціональності ядра. Всі системні дзвінки разом утворюють системний API.
  • Приклади оболонок наведені у другому термінальному визначенні.

Термінал має безліч значень:

  • (1) Текстовий термінал . Це поєднання монітора дисплея та клавіатури. Кабель підключав термінал до комп'ютера (часто побічно). Його називали терміналом, оскільки він знаходився на кінцевому кінці цього кабелю. Ці термінали зазвичай були фізично відокремлені від комп'ютера, оскільки ще в ті часи багато терміналів були підключені до однієї мейнфрейму / комп'ютера, тому декілька користувачів могли мати доступ до комп'ютера одночасно.
  • (2) вікно терміналу інакше емулятор терміналу . У Linux термінальне вікно - це емуляція консолі, що міститься у вікні графічного інтерфейсу. Це CLI, в який ви вводите текст, і цей вхід читається оболонкою, яку ви використовуєте. Існує багато типів оболонок (наприклад, bash, dash, ksh88) і терміналів (наприклад, konsole, gnome).
  • (3) Для пояснення щодо псевдотерміналів перегляньте це . Це пара з двох "файлів пристроїв", які використовуються для зв'язку між процесом та емулятором терміналу.

Консоль має багато значень:

  • (1) панель приладів, що містить елементи керування для комп'ютера.
  • (2) Системна консоль, яка називається консоллю комп'ютера . Це поєднання монітора дисплея та клавіатури, підключених до комп'ютера. Це синонім того, що ми називаємо «текстовим терміналом». Іноді також інші периферійні пристрої для введення користувача, такі як миша, є частиною консолі.
  • (3) Інтерфейс командного рядка, який охоплює весь екран. Це на відміну від вікна терміналу, який є графічним інтерфейсом із символом X у правому верхньому куті, щоб закрити його. Це два режими відображення для CLI (інтерфейси командного рядка) в Unix-подібних системах. Як і в термінальному вікні, консоль може також працювати з багатьма оболонками.

Часто операційні системи дозволяють запускати кілька консолей на фізичній консолі (визначення консолі 2). Вони називаються віртуальними консолями, відомими також віртуальними терміналами , і до них можна отримати доступ через комбінації ctrl+ alt+ Fx. Наприклад, якщо ви хочете відкрити 3-ю віртуальну консоль, ви використовуєте комбінацію ctrl+ alt+ F3.

Консолі (визначення 3) можуть здатися вам анахронізмом, але експертам слід зручно користуватися ними, оскільки існує багато ОС, які не підтримують графічний інтерфейс. Крім того, якщо графічний інтерфейс припиняє відповідати, консоль все ще може працювати.


2

Більшість терміналів нині є строго кажучими емуляторами терміналів . Це тип ролі в роботі системи, схожої на UNIX, і в той же час базовий інтерфейс, пропонований системами. Насправді все, включаючи GUI, базується на цьому.
Розмовно "термінал" може також посилатися на кінцеві точки в комп'ютерній мережі зі зірковою топографією.

Консоль відноситься до (апаратних) інтерфейсів для терміналів. Тобто є послідовні консолі і в наш час переважно віртуальні .
Вікно розмовно називається "консоль" -вікно - оболонка, підключена до терміналу системи, через віртуальну консоль.

Ще в той час, коли комп'ютери були дорогими, можливо, у пристрою був один фактичний комп'ютер і кілька терміналів, що підключалися до нього, через послідовні кабелі ("послідовна консоль"). ОС, операції тощо проводилися на фізичному комп’ютері, введення та вихід відбувався на консолях (іх).
Ви можете перемикатися між віртуальними терміналами, натискаючи CTRL+ ALT+ F1(через до F6): залишок тих часів.
Сьогодні концепція «тонких клієнтів» сходить у цьому напрямку централізації величезних обсягів ресурсів та надання достатньо обладнання для забезпечення сучасного інтерфейсу на фактичному робочому місці.

оболонка - це "двигун", який ви бачите в терміналі. Він забезпечує взаємодію з самою системою та додає приємні функції, такі як автоматичне завершення, змінні тощо.
Це перекладає туди і назад між фактичною ОС / ядром, яке використовує системні виклики, і вами. Системні дзвінки без оболонки схожі на кодування, assemblerі оболонка принаймні дає вам C.

Командний рядок відноситься до способу обміну входом і виходом через текстове вікно. Строго кажучи, рядок, в якому ви вводите, - це (поточний) командний рядок. Метод взагалі більш правильно називається інтерфейсом командного рядка або CLI.

  1. ядро
  2. пропонує термінал
  3. термінал підключений через консоль
  4. консоль працює оболонкою
  5. команди та вихід обмінюються за допомогою командного рядка (інтерфейс)

1
Інструкції командного рядка розуміються не ядром, а оболонкою. "Основною основою інструкцій, які ядро ​​розуміє" були б системні виклики. "Базовий інтерфейс командного рядка UNIX" - оболонка, між цим і "приємними можливостями" немає розділення. "Вікно-термінал-емулятор" не є консоллю.
Жиль

1
@Gilles скоригований. Очевидно, там переплутали деякі речі.
Марк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.