Яка різниця між терміналом, консоллю, оболонкою та командним рядком?
Яка різниця між терміналом, консоллю, оболонкою та командним рядком?
Відповіді:
Коротка відповідь:
Довга відповідь:
Консоль і термінал тісно пов'язані. Спочатку вони означали обладнання, за допомогою якого ви могли взаємодіяти з комп'ютером: в перші дні Unix це означало пристрій телепринтера, що нагадує друкарську машинку, яку іноді називають телерайт-машинописом, або "tty" в короткому руці. Назва "термінал" прийшла з електронної точки зору, а назва "консоль" з меблевої точки зору. Дуже рано в історії Unix електронні клавіатури та дисплеї стали нормою для терміналів.
У термінології Unix термінал - це певний тип файлів пристроїв, який реалізує ряд додаткових команд ( йоктлів ) поза читанням і записом . Деякі термінали надаються ядром від імені апаратного пристрою, наприклад, на вході, що надходить з клавіатури, і на виході, що надходить на екран текстового режиму, або вхід і вихід передаються через послідовну лінію. Інші термінали, які іноді називають псевдотерміналами або псевдотерміналами, забезпечуються (через тонкий шар ядра) програмами, які називаються емуляторами терміналів . Деякі типи термінальних емуляторів включають:
Слово термінал може також мати традиційне значення пристрою, за допомогою якого взаємодіють із комп'ютером, як правило, з клавіатурою та дисплеєм. Наприклад, термінал 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 оболонка користувача - це програма, яка викликається при вході в систему. Звичайні облікові записи користувачів мають оболонку командного рядка, але користувачі з обмеженим доступом можуть мати оболонку з обмеженим доступом або якусь іншу конкретну команду (наприклад, для передачі файлів -тільки рахунки).
Розподіл праці між терміналом і оболонкою не є абсолютно очевидним. Ось їх основні завдання.
\e[D
). Оболонка перетворює керуючі послідовності в команди (наприклад, \e[D
→ backward-char
).M-x shell
Emacs.foo
", "перехід кольору переднього плану на зелений", "переміщення курсору в наступний рядок" і т. Д. Термінал діє за цими інструкціями.Перероблено від Unix & Linux
CONFIG_TTY
. Підтримка емуляторів терміналів (правильніше називати псевдотерміналами - "термінальний емулятор" не завжди включає telnetd, екран, очікувати, ...) контролюється CONFIG_UNIX98_PTYS
. Підтримка дисплея текстового режиму ПК та клавіатури тощо допомагає CONFIG_VT
. Дивіться drivers/tty/Kconfig
у джерелі ядра.
Візуальне уявлення.
Щось, за що ти можеш сісти і працювати, як начальник.
Деяке обладнання, яке робить купу матеріалів.
Іншим прикладом консолі може бути відеоігрова консоль, така як Super Nintendo [де ви можете грати в Actraiser]
В основному додаток для запуску команд.
В основному все, що ви вводите команди.
З інформаційного проекту Linux :
Термінал : Технічно термінальне вікно, яке також називається емулятором терміналу, є текстовим вікном у графічному інтерфейсі користувача (GUI), що імітує консоль.
Нашими словами, додаток GUI, звідки ми можемо отримати доступ до консолі користувача.
Консоль : панель приладів, що містить елементи керування для комп'ютера
Shell : оболонка - це програма, яка забезпечує традиційний, лише текстовий інтерфейс користувача для Linux та інших Unix-подібних операційних систем
Командний рядок : командний рядок - це простір праворуч від командного рядка в режимі повнотекстового відображення на моніторі комп'ютера (зазвичай це ЕПТ або РК-панель), куди користувач вводить команди та дані
Відповіді тут здаються дуже хорошими. Однак вони занадто сухі і технічні на мій смак, тому я задумаюся.
Термінал - це кінець чогось - там, де він припиняється. Наприклад, якщо ви їдете в метро в якомусь місті, станція, куди ви спускаєтесь, - ваш термінал. Або в аеропорту місце, куди люди виїжджають, коли доїдуть до країни призначення, вважається терміналом. Причина, що зараз термінал в аеропорту - це як місце, де ви отримуєте людей на борту, так і місце, де ви вивозите їх з літака, з очевидних економічних причин.
Мета комп'ютера - отримати дані, зробити щось із ним і виплюнути результат. Таким чином, термінал - це будь-який пристрій, з якого можна отримати результат обчислення (наприклад, екран). Так сталося, що на перших комп'ютерах у вас зазвичай був вхід (клавіатура) і вихід (екран) як один пристрій. Через це в даний час терміналами вважаються будь-які пристрої введення / виводу. Миша, клавіатура, екран, камера, все це термінали.
Shell - річ з ОС. На комп'ютері у вас є ядро, яке, наприклад, на Ubuntu, є частиною Linux. Оскільки ядро справді низького рівня, надається оболонка - програма, яка дозволяє користувачеві взаємодіяти з ядром простим способом. Це, наприклад, BASH.
Консоль - це (зі словника)
рівна поверхня, яка містить елементи управління для машини, для шматка електричного обладнання тощо.
Ось чому в музичній індустрії дошки з усіма ручками, або в космічному човнику командний стіл, всі вони вважаються консолями. Супер Nintendo та PS2 також історично називаються консолями, оскільки перші подібні розважальні пристрої були схожі на коробки з купою на них кнопок.
Командний рядок - це просто інтерфейс - протилежний GUI. А саме є два типи інтерфейсів на комп’ютері; CLI (інтерфейс командного рядка) та GUI (графічний інтерфейс користувача). Основна відмінність полягає в тому, що перша отримує введення з клавіатури, а друга отримує введення миші.
Підводячи підсумки моєї відповіді:
Shell - програма, яка processes
командує та returns
виводить, як bash в Linux.
Термінал - це програма, що run
має оболонку , раніше вона була фізичним пристроєм (раніше термінали були моніторами з клавіатурами, вони були телетипами ), а потім її концепція була передана в програмне забезпечення , як Gnome-Terminal .
Тож я відкриваю Gnome-Terminal , з'являються чорні вікна, які запускають Shell, щоб я міг запускати свої команди.
Консоль - це особливий вид терміналу , він також був фізичним пристроєм. Наприклад, у Linux ми маємо virtual console
доступ до них за допомогою комбінації Ctrl+ Alt+ F1 to F7.
Консоль іноді означає клавіатуру та монітор, фізично прикріплені до цього комп'ютера.
Ці терміни часто йдуть разом, тому люди використовують один із термінів для позначення колекції. (тобто з контексту зазвичай очевидно, що вони означають вікно терміналу, що забезпечує інтерфейс до оболонки командного рядка).
Щоб це не дісталося до довготермінових, я просто збираюся сказати 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 поводження, ви можете сказати, що термінал також має декілька значень.)
/dev/console
. Консоль не особливо неоднозначна - хоча вона іноді використовується в більш загальному сенсі терміналу , це досить рідко (рідше, ніж термінал використовується конкретно для консолі).
Я думаю, що ще в перші часи роботи з комп'ютерами, що ділилися часом, кожен користувач мав термінал (коли міг отримати його!), Але консоль мали лише системні оператори. Консоль може використовуватися для таких завдань, як перезавантаження машини або отримання системної діагностики, яка була неможлива з терміналів користувача. Консоль знаходилася в машинному залі, невід'ємна частина комп'ютера, тоді як термінали могли бути віддаленими. Консоль також міститиме апаратні світильники та вимикачі, а не лише введення та виведення тексту.
Я б сказав, що командний рядок - це область, де користувач може вводити команду, тоді як оболонка - це програма, яка інтерпретує / підкоряється цій команді. Термін "оболонка" дуже специфічний для похідних Unix; "командний рядок" більше в традиції Windows / DOS. Еквівалент у мейнфреймах зазвичай називають "мовою контролю роботи".
Зрозуміло, що ці оригінальні розрізнення з часом розмиваються в міру зміни технологій.
Спроба короткої відповіді, орієнтованої на користувача:
командний рядок - рядок, куди ви вводите команди. Зазвичай він говорив про те, що потрібно запустити щось у вікні текстового режиму (інтерфейс командного рядка), наданий вашою операційною системою.
shell - фактична програма, запущена операційною системою для обробки матеріалів, які ви вводите command line
. Звідси і назва - зручна оболонка для недружнього ядра ОС. Він надає командний рядок, такий як, $
або >
виконує власні команди та програми. Ви завжди працюєте через shell
програму і ніколи не працюєте безпосередньо з консоллю або терміналом.
консоль - це вікно, де працюють ваші текстові програми. Це вікно обробляє натискання клавіш, знає, що це ширина та висота. Може бути повноекранним.
термінал - це деякий пристрій з відображенням для людей, який приймає вхідний потік символів і показує їх. Користувача немає відгуків про висоту або ширину (лише хакі) або натискання клавіш на клавіатурі - до нього подорожують лише символи. Термінал обробляє спеціальні послідовності в цьому потоці, щоб зробити кольори кольорами, очистити екран і зробити інші неприємні речі. Термінали лускають, тому що легко зіпсувати речі, якщо файл, який ви пересилаєте для виводу, містить ці спеціальні послідовності. Вони популярні в мережевих інтерфейсах та інтерфейсах налагодження пристроїв, тому що вам просто потрібен єдиний потік для надсилання виводу та керування пристроєм виводу, і ви можете просто tap
вести розмову без необхідності ініціалізації чи створення вікна.
serial console - це консоль, яка обробляє вхідний потік як термінал.
Це невиразна тема, адже терміни дуже неоднозначні. Я настійно рекомендую прочитати посилання, які я надав протягом цієї відповіді, які також є моїми джерелами для цієї відповіді.
Оболонка являє собою шар над ядром:
Термінал має безліч значень:
Консоль має багато значень:
Часто операційні системи дозволяють запускати кілька консолей на фізичній консолі (визначення консолі 2). Вони називаються віртуальними консолями, відомими також віртуальними терміналами , і до них можна отримати доступ через комбінації ctrl+ alt+ Fx. Наприклад, якщо ви хочете відкрити 3-ю віртуальну консоль, ви використовуєте комбінацію ctrl+ alt+ F3.
Консолі (визначення 3) можуть здатися вам анахронізмом, але експертам слід зручно користуватися ними, оскільки існує багато ОС, які не підтримують графічний інтерфейс. Крім того, якщо графічний інтерфейс припиняє відповідати, консоль все ще може працювати.
Більшість терміналів нині є строго кажучими емуляторами терміналів . Це тип ролі в роботі системи, схожої на UNIX, і в той же час базовий інтерфейс, пропонований системами. Насправді все, включаючи GUI, базується на цьому.
Розмовно "термінал" може також посилатися на кінцеві точки в комп'ютерній мережі зі зірковою топографією.
Консоль відноситься до (апаратних) інтерфейсів для терміналів. Тобто є послідовні консолі і в наш час переважно віртуальні .
Вікно розмовно називається "консоль" -вікно - оболонка, підключена до терміналу системи, через віртуальну консоль.
Ще в той час, коли комп'ютери були дорогими, можливо, у пристрою був один фактичний комп'ютер і кілька терміналів, що підключалися до нього, через послідовні кабелі ("послідовна консоль"). ОС, операції тощо проводилися на фізичному комп’ютері, введення та вихід відбувався на консолях (іх).
Ви можете перемикатися між віртуальними терміналами, натискаючи CTRL+ ALT+ F1(через до F6): залишок тих часів.
Сьогодні концепція «тонких клієнтів» сходить у цьому напрямку централізації величезних обсягів ресурсів та надання достатньо обладнання для забезпечення сучасного інтерфейсу на фактичному робочому місці.
оболонка - це "двигун", який ви бачите в терміналі. Він забезпечує взаємодію з самою системою та додає приємні функції, такі як автоматичне завершення, змінні тощо.
Це перекладає туди і назад між фактичною ОС / ядром, яке використовує системні виклики, і вами. Системні дзвінки без оболонки схожі на кодування, assembler
і оболонка принаймні дає вам C
.
Командний рядок відноситься до способу обміну входом і виходом через текстове вікно. Строго кажучи, рядок, в якому ви вводите, - це (поточний) командний рядок. Метод взагалі більш правильно називається інтерфейсом командного рядка або CLI.