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


1235

Я думаю, що ці терміни майже посилаються на одне й те саме, коли вони вживаються вільно:

  • термінал
  • оболонки
  • тти
  • консоль

На що саме посилається кожен із цих термінів?



28
Я хотів би додати до цього командний рядок :-)
teeks99

1
Командний рядок - це просто мова, яка використовується для передачі команд інтерпретатору командного рядка, що працює в оболонці від емулятора термінала / терміналу.
Марті Фрід

1
Телетайп (TTY) був першим введений в експлуатацію і виставлені на механічний інститут в Нью - Йорку в 1844. en.wikipedia.org/wiki/Teleprinter
Serge Stroobandt

Ще два корисні посилання - feyrer.de/NetBSD/ttys.html та quora.com/…
Nishant

Відповіді:


1198

Термінал знаходиться в кінці електричного проводу, оболонка - будинок черепахи, tty - це дивна абревіатура, а консоль - це свого роду шафа.

Ну, етимологічно кажучи, все одно.

У термінології Unix коротка відповідь така

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

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

У термінології unix, tty - це особливий тип пристрою, який реалізує ряд додаткових команд ( йоктлів ), що перевищують функції читання та запису. У своєму найпоширенішому значенні термінал є синонімом tty. Деякі тиски надаються ядром від імені апаратного пристрою, наприклад, вхід, що надходить з клавіатури, і вихід, що надходить на екран текстового режиму, або вхід і вихід передаються по послідовному рядку. Інші ttys, які іноді називаються псевдо-ttys , забезпечуються (через тонкий шар ядра) програмами, що називаються емуляторами терміналів , такими як Xterm (працює в системі X Window ), Screen(що забезпечує шар ізоляції між програмою та іншим терміналом), Ssh (який з'єднує термінал на одній машині з програмами на іншій машині), Expect (для сценаріїв взаємодії терміналів) тощо.

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

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

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


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

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

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

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

50
Лише каламбур: я б сказав, що ядро ​​обох типів "надається" ядром. Я б наголосив на тому, що апаратні тити (наприклад, послідовні лінії та вбудована консоль текстового режиму) мають один кінець, підключений до апаратного забезпечення, і один кінець, підключений до програмного забезпечення (наприклад, програми для входу та / або оболонки), тоді як псевдо-ttys мають обидва кінці підключені до програмного забезпечення (наприклад, термінальний емулятор на одному кінці та оболонка на іншому).
Кріс Джонсен

12
@phunehehe: Так, це інакше значення "оболонки", яке зазвичай використовується в дизайні операційної системи: оболонка є зовнішньою частиною ядра. Це не термінологія Unix: ядра Unix, як правило, не мають компонента, який можна назвати оболонкою.
Жиль

24
Це образ у моїй свідомості для метафори оболонки.
ændrük

12
Існує також інше значення "консолі" під Linux. Консоль (є лише одна) - там, де йдеться printkпро достатній пріоритет (наприклад, паніка ядра). Він встановлюється, передаючи console=DEVICE,...командний рядок ядра (наприклад, console=ttyS0,115200для першого послідовного порту, зі швидкістю 115200 bps). Зазвичай він за замовчуванням відповідає віртуальному терміналу, але це може бути змінено при компіляції ядра.
дероберт

19
"... термінал ... обробляє комбінації клавіш, такі як Ctrl + C, щоб знищити роботу переднього плану та Ctrl + Z, щоб призупинити його" Не зовсім так: термінал все ще просто надсилає контрольні символи, це tty пристрій, який вирішує, як з ними працювати, і це налаштовується . За замовчуванням пристрій tty перетворює керуючі символи в сигнали, що надсилаються в оболонку (та інші процеси).
Кріс Пейдж

194

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

Файл, що представляє термінал, традиційно називається файлом tty . Якщо ви заглянете в каталог "/ dev" системи UNIX, ви знайдете безліч tty- файлів, підключених до віртуальних консолей (наприклад, tty1 в Linux), віртуальних терміналів (наприклад, pts / 0) або фізично підключеного обладнання (наприклад, ttyS0 - це фізичний послідовний термінал, якщо такий є, приєднаний до першого послідовного порту хоста).

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

І останнє, але не в останню чергу, оболонка - це спеціальна програма, яка взаємодіє з користувачем через керуючий tty і пропонує користувачеві спосіб запуску інших програм (наприклад, bash, csh, tcsh).

Емулятор терміналу є програми , яка емулює фізичний термінал (наприклад , Xterm, гном-термінал, MiniCom).

Отже, коли ви дивитесь на «текстове вікно» вашої системи Linux (під X11), ви шукаєте: емулятор терміналу , підключений до віртуального терміналу , ідентифікований файлом tty , всередині якого працює оболонка .


2
Будь-який настільний комп'ютер має системну консоль (у моєму 2015 році чи плакаті 2010 року, неважливо). Як було правильно сказано, це обладнання. Але заявляти, що "в даний час майже всі ... консолі представляють" віртуальні "- це майже суперечливо і очевидно не добре.
Incnis Mrsi

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

@andcoz - Що ви розумієте під текстовим вікном? Не є емулятор терміналу віртуальним терміналом? Якщо я запускаю команду ttyв емуляторі термінала, такому як Konsole KDE, вихід - / dev / pts / 0.
Мотивовано

1
@IncnisMrsi - це не консоль настільного комп’ютера ? Якщо ні, що ви маєте на увазі під системною консоллю?
Мотивовано

2
@Motivate /dev/pts/0- це tty-файл, обробник програмного інтерфейсу, оголеного ядром. За допомогою цього обробника програма (наприклад, оболонка) може взаємодіяти з терміналом (реальним або віртуальним). Емулятор терміналу - це програмне забезпечення, яке емулює термінал. Емулятор просить ядро ​​створити обробник, щоб програма мала взаємодіяти з собою (див. man openpty). Таким чином, інформація надходить від терміналу (емулятора) до обробника ядра, до програми (і навпаки). Програми та термінали не розмовляють між собою безпосередньо, а лише через файл tty (обробник).
andcoz

48

КОРОТКО пояснення:

Консоль - це термінал. Система має одну консоль і потенційно кілька терміналів. Консоль, як правило, є основним інтерфейсом для управління комп'ютером, наприклад, поки він ще завантажується.

Термінал - це сеанс, який може приймати та надсилати введення та вихід для програм командного рядка. Консоль - це окремий випадок.

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

Оболонка - це програма, яка використовується для управління та запуску програм. Його часто використовують інтерактивно, через термінал. Існує декілька програм Shell, Bash, мабуть, є найбільш часто використовуваною оболонкою сьогодні. Інші снаряди, не в конкретному порядку, включають Bourne Shell, C-shell, Dash, Tsch, Ksh та все більш популярний zsh. Є ще багато.

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


1
PTY - це псевдо TTY. TTY може бути, але фактично не віртуальним (або псевдо) терміналом.
Лучано

35

TTY (тобто T Еле TY pewriter) являє собою спеціальний пристрій , який дозволяє людям , які глухі, слабочуючі, або мови слабочуючих користуватися телефоном для зв'язку, дозволяючи їм набирати текстові повідомлення. TTY потрібен для обох кінців розмови для спілкування.
АБО
TTY - термінал, який використовується для введення текстового повідомлення.


Оболонка : зовнішня захисна покривна частина насіння, тобто ядро.
АБО
каркасна чи зовнішня структура для центральної або істотної частини системи.
введіть тут опис зображення


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


28

Вже є дві чудові відповіді, але хочеться додати інформацію про фразу "віртуальний термінал" . Взагалі це означає щось, що забезпечує зовнішній вигляд / функціональність терміналу, тобто. е. в широкому сенсі. Але в перші дні Linux (1994–95) деякі розробники використовували синоніми «віртуальної консолі» (декілька непов'язаних інтерфейсів користувача) . Це використання зберігається в документації; два різних терміни використовувались (і використовуються) для позначення tty1, tty2… речі. На сьогоднішній день (з 1996 р.) "Віртуальний термінал" також може відноситися до емуляторів терміналів на базі .

vtПерша частина його ядра була Linux (драйвер системної консолі текстового режиму). Спочатку він використовувався для підключення до мейнфреймів, і в цьому сенсі це "віртуальний термінал", звідси і назва. Код управління віртуальними консолями також знаходитьсяvt.c . Інженери Linux ядра послідовно використовують слово "консолі" для позначення tty1, tty2 ... і використовують для них префікс "vc_". Наприклад, є vc_allocateфункція. З іншого боку, розробники таких інструментів для користувальницького простору, як kbdі console-toolsвикористовували "віртуальну консоль" (VC) та "віртуальний термінал" (VT) взаємозамінно. Ī̲ зв’язався з Андрісом Е. Брауеромі попросив його роз'яснити термінологію, яку використовують ранні розробники (1994–95). Ендріс люб’язно дав відповіді. Він зазначає, що VT і VC - синонімічні та "нероздільні" абревіатури. -> Взагалі віртуальна консоль - це віртуальний термінал, але навпаки це неправда. Ті "віртуальні термінали", які не є віртуальними консолями, справді є псевдотерміналами (як стверджує Андріс, це не VT ). На відміну від віртуальних консолей, де ядро ​​забезпечує функціонал терміналу для консольного додатку, псевдотермінали використовують «пристрої» PTY для організації зв'язку між консольними програмами та програмою створення терміналів, яка працює в просторі користувачів . Прикладами є емулятори терміналів на основі X іsshd, що виділяє псевдотію для кожного сеансу входу. Псевдотію не можна назвати «консоллю» - це помилка.


14
  • Термінал = Інтерфейс, який забезпечує відображення для виводу та клавішну дошку для введення в сеанс оболонки.

  • Shell = Інтерпретатор, який виконує команди, введені як рядок

  • Консоль: фактично два типи консолей ми використовуємо

    • Фізична консоль = Обладнання дисплея та клавіатури, що використовуються для взаємодії з системою

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

  • tty (телетайп, тобто термінал). = Термінал - це в основному просто пристрій інтерфейсу користувача, який використовує текст для введення та виводу.


Що таке tty? - інакше ваша відповідь єдина, яку я прочитав
loxaxs

8

Потрібно зануритися в історію.

Були пристрої, подібні до машинок, з папером та клавіатурою. Їх називали телетайпами (що означає "тип дистанційно", оскільки "tele" означає "віддалений") або ttys - коротко. У 70-х їх застаріли пристрої з ЕКР-монітором під назвою скляні ттис .

Будь-якому комп’ютеру потрібен певний спосіб повідомити про його стан та помилки (і, можливо, приймати команди). Це робиться через консоль, яка майже завжди підключається безпосередньо до комп'ютера. Отже, для консолі є 2 значення : те, що використовується для повідомлення стану та щось, що безпосередньо підключено.

UNIX - це інтерактивна система: кілька користувачів можуть підключитися до неї та запустити програми. Для цього перші комп’ютери використовували телетипи ( tty ): кожен користувач мав телетайп, підключений до машини з послідовним підключенням до лінії зв'язку. Такий телетип називається термінальним . UNIX також отримав спеціальну підсистему для обробки "користувачів, що сидять за терміналами", що також називається tty, оскільки перші термінали були телетипами. Кожен процес може бути підключений до tty в Unix. Це означає, що користувач десь сидить біля терміналу. Для отримання додаткової інформації див. Http://www.linusakesson.net/programming/tty/ .

Користувачі потребують певного способу сказати ядро ​​для запуску програми. для цього використовується оболонка (sh, bash, csh, ksh тощо). оболонка працює на tty , приймає команди від користувача і просить ядро ​​запустити якусь програму.

Але термінали не завжди фізично підключені до машини. Можливо, існує якась програма, яка "емулює" термінал, який приймає натискання клавіш від користувача та надсилає їх кудись (xterm та ssh - хороші приклади). Для цього в ядрі є API, який називається псевдотерміналом . Тож ваш tty може бути дійсно підключений до якоїсь програми замість реального терміналу. Xterm використовує X11 для відображення тексту, а ssh використовує мережеве з'єднання для нього.

У IBM PC є клавіатура та відеокарта (їх також іноді називають консольними ). Linux може робити з ним різні речі:

  • Використовуйте його як "движок для повідомлення про помилки та стан": консоль Linux. Якщо ви передасте console = / dev / ttyS0 до ядра, воно використовуватиме щось, підключене до COM1, як консоль, а якщо ви цього не зробите, воно використовуватиме консоль ПК.
  • Використовуйте його для емуляції терміналу, так званого віртуального терміналу (vty).

Він також може зупинити емуляцію терміналу на консолі та подати його якійсь програмі. Додаток може перемикати свій режим відеозйомки та використовувати його виключно (X11 або svgalib може це зробити).

Отже, ось сучасні значення:

  • термінал: Щось із справжнім користувачем, що сидить за ним. Це може бути фізичний термінал (рідкісний) або псевдотермінал (xterm, ssh) або віртуальний термінал (vty в Linux)
  • shell: додаток (bash, tcsh тощо), який допомагає користувачеві взаємодіяти з системою.
  • tty: або термінал, або підсистема ядра для підтримки терміналів.
  • консоль: те, де повідомляється про стан та помилки ( /dev/console) або фізична клавіатура та відеодисплей, підключені до комп'ютера.

7

Ось коротка відповідь -

Ядро - найпотаємніша частина будь-якої сучасної операційної системи, яка безпосередньо спілкується з фактичним обладнанням.

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

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

Консоль - спеціальний тип терміналу, який безпосередньо підключений до мейнфрейму з метою адміністрування ОС.

tty - TeleTypewriter, що використовується для надсилання та прийому даних до та від Mainframe. Використовувались до появи відеотерміналів. Але умовно його все ще називають tty. Навіть товаришstty

Докладна детальна відповідь тут - Термінал, Консоль, Оболонка, Ядро, Команди - Різні частини комп'ютера


дякую, але в основному, якщо термінал існує, чому існують ще tty також в системі ubuntu для персональних комп'ютерів, доступних за допомогою alt + f-1/6, будь ласка, я не можу зрозуміти їх корисність вище того, що до них можна отримати доступ без використання графічної системи якщо я добре зрозумів
Веб-жінка

1
@Webwoman - у мене налаштована система, щоб дозволяти доступ до rootоблікового запису лише через sudoабо через вхід у консоль. Часто консолі займають особливе місце, яке належить до привілеїв, оскільки той, хто має доступ до них, обов'язково має фізичний доступ до комп'ютера, з яким вони спілкуються. Вони також є методом доступу в крайньому випадку. Якщо ОС знаходиться в частково порушеному стані (наприклад, драйвер Ethernet зламаний), ви все одно можете отримати доступ до консолі. Це єдиний пристрій людського інтерфейсу, який ЗАВЖДИ повинен бути доступний, незалежно від того, в якому стані знаходиться система.
Всезначний

@Omnifarious спасибі за вашу відповідь "Консолі часто мають особливе місце, яке має привілейований характер, оскільки хтось, хто має доступ до них, обов'язково має фізичний доступ до комп'ютера, з яким вони спілкуються", ти мав на увазі, що TTY часто має особливе місце, яке має привілей?
Веб-жінка

@Webwoman - Ні, консоль. TTY часто не підключається безпосередньо до комп'ютера. І консоль часто не є TTY у традиційному розумінні. Коли я в кінці 80-х років поїхав до штату Мн, існувала спеціалізована мережа, яка не використовувала Інтернет-протокол (він же IP) для підключення випадкових TTY до випадкових комп'ютерів. У мейнфреймах IBM відбувається подібна річ, і це було однією з головних причин, коли IBM створила СНР. І звичайний ПК, навіть коли він показує лише текст, багато в чому не схожий на TTY, тому консоль ПК насправді не TTY.
всезначний

@Webwoman - визначальною особливістю консолі є те, що вона має пряме з'єднання з обладнанням, на якому працює операційна система. Ця ідея дещо розмита сучасними «віртуальними машинами», але це основна ідея.
всезначний

6

Крім прийнятої відповіді та демістифікованої статті TTY , я дуже любив читати ці дві статті:

Цей заснований на NetBSD.

Ще в кам'яні століття Unix комп'ютерні системи складалися з мейнфрейму, великої коробки миготливих вогнів, в яких були пам'ять, масове зберігання та обчислювальні одиниці, і які запускали процеси, розпочаті користувачами або операторами. Оскільки обладнання було дуже дорогим, системи використовувались як справжні багатокористувацькі системи, і багато людей одночасно взаємоділи із системою. Те, чого зазвичай не було - на відміну від сучасних робочих станцій Unix - це фіксований монітор та клавіатура. Натомість видача команд машині та отримання виводу здійснювались через послідовні лінії, спочатку використовуючи телетайпери та пізніше термінали CRT (катодна промінь). Телетайпери - ось звідки беруться "Ttys" в Unix - це електронні друкарські машинки, які надсилають клавіші, натиснуті через серійну лінію, на хост,

Цей заснований на Linux.

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


1

Дозвольте мені взяти тріщину в цьому ... Я буду використовувати в цьому Unix та Linux більш-менш синонімічно. Якщо я маю на увазі щось історичне, що передувало існуванню Linux, я зазвичай напишу "Unix", а якщо я кажу про щось більш недавнє або щось специфічне для Linux аромату Unix, я зазвичай напишу "Linux ".

Оболонка

Єдине, що у вашому списку - це дискретна концепція, яка не перетинається з іншими, - це «оболонка». Оболонка - це програма, метою якої є спілкування з користувачем та виконання операцій операційної системи від їх імені.

Найпоширеніші оболонки використовують техніку, яку називають "командний рядок", яка складається з надсилання користувачеві певного запиту, очікування, коли користувач введе текстову команду, а потім виконання цієї команди. Але є оболонки на основі меню і навіть графічні оболонки (як Windows File Explorer), хоча жодна поважаюча себе особа Unix ніколи не називатиме таку річ «оболонкою».

У Unix, якщо хтось називає щось "оболонкою", він майже напевно означає деяку форму інтерфейсу командного рядка, як я щойно описав. І в світі Unix дуже дивно називати що-небудь «оболонкою», якщо він не спілкується з користувачем за допомогою моделі tty, яку я описав далі.

TTY

Це заплутане, оскільки воно може стосуватися кількох різних речей.

У Linux існує такий пристрій, який називається 'tty'. Це абстрактний пристрій, який, як очікується, буде використовуватися для двонаправленого спілкування з тим, що або є користувачем, або певним чином приймає дані від користувача. Іноді цей абстрактний пристрій може відповідати безпосередньо якомусь фізичному пристрою. Іноді це може бути програма, яка представляє когось із вікном, в якому з’являється повідомлення, і в яке користувач може вводити текст.

Але причина цього абстрактного пристрою існує, і причина, яку його називають "tty", полягає в тому, що "tty" є скороченням "телетайп", який був фактичним фізичним пристроєм, на якому був принтер, який друкували на папері в поєднанні з клавіатурою. Модель, яку абстрактний пристрій 'tty' подає програмам, які його використовують, в основному є телетайпом на іншому кінці. Ви надсилаєте йому символи, і ці символи відображаються на телетайпі. Коли ви читаєте з нього символи, ці символи представляють клавіші, введені на клавіатурі.

Старі паперові принтери на основі принтера були швидко замінені відеосигналами. На тих, звичайно, немає рулону паперу. І насправді на екрані можна перезаписати будь-який символ. Але, замість того, щоб представити якийсь абстрактний інтерфейс для екрана, програми замість цього очікують, що вони надсилатимуть спеціальні потоки символів, які називаються втечевими послідовностями, які виконують різноманітні завдання. Зазвичай є абстрактна річ, яка називається "курсор", яку можна переміщувати по екрану, і будь-який надісланий символ замінить все, що знаходиться біля курсору, і курсор перемістить один символ далі. Часто ви можете змінити колір символу, який збирається надрукувати також із послідовностями втечі.

Є "скляні тити", які не відповідають цій моделі і, отже, погано поводяться у світі Unix. Сімейство відеотерміналів IBM 3270 належить до цієї категорії.

Те, що люди Linux / Unix зазвичай називають «вікном оболонки», - це емуляція скляного tty за допомогою графічного інтерфейсу користувача. Всередині програми, що працюють всередині вікна оболонки, розмовляють з віртуальним пристроєм tty, який іноді називають псевдо-tty або псевдотерміналом (він же pty).

Термінал

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

Консоль

Консоль - це особливий тип терміналу, який, як правило, повинен бути приєднаний якимось прямим захищеним способом до обладнання, на якому працює операційна система.

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

Існують способи використання Linux через те, що називається "послідовна консоль", це консоль, яка прикріплена до комп'ютера через послідовний порт, як порт USB (або, на деяких дуже малих та / або дуже старих комп'ютерах, порт RS-232 певного роду) і дотримується старої моделі телетайпу досить суворо.

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

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