Лекція 5. Командні інтерпретатори

5.1. Функції командних інтерпретаторів

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

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

В операційні системи MS-DOS та Windows 95 включений командний інтерпретатор COMMAND.COM, в Windows NT - cmd.exe, в OS/2 командний інтерпретатор теж називається cmd.exe, найпоширеніший командний інтерпретатор в Linux і FreeBSD - bash, крім якого є велике сімейство інших.

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

До функцій інтерпретатора командного рядка відносяться:

  • Взаємодія з користувачем (редагування командного рядка, історія команд).
  • Обробка (розширення) шаблонів імен ( «*», «?» І т. Д.).
  • Перенаправлення вводу-виводу команд.
  • Управління завданнями.

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

 

5.2. Командний рядок Windows

COMMAND.COM - інтерпретатор командного рядка в операційних системах DOS, OS/2, сімейства Windows 9x і ряду інших. Завантажується при старті системи і виконує команди з файлу AUTOEXEC.BAT.

В операційних системах сімейства Windows NT (починаючи з Windows NT 3.1 і закінчуючи Windows 10/Windows Server 2012) і OS/2 інтерпретатором командного рядка є програма cmd.exe. Однак, для сумісності з DOS-додатками, COMMAND.COM присутній і в версіях цих систем.

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

Cmd.exe - інтерпретатор командного рядка для операційних систем OS/2, Windows CE і для сімейства операційних систем, що базуються на Windows NT. cmd.exe є аналогом COMMAND.COM.

Розробка cmd.exe була фактично зупинена після виходу Windows 2000. Він все ще залишається частиною сучасних операційних систем Microsoft для персональних комп'ютерів (в тому числі Windows 8, Windows Server 2012 і Windows 10) для забезпечення зворотної сумісності. В якості основної командної оболонки в цих системах розглядається Windows PowerShell.

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

Windows PowerShell 2.0 був випущений в складі Windows 7, Windows 8 і Windows Server 2008 R2, а також Windows Server 2012 R2, як невід'ємний компонент системи. Крім того, друга версія доступна і для інших систем, таких, як Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1, Windows Vista SP2, Windows Server 2008 і Windows Server 2012.

Windows PowerShell побудований на базі Microsoft .NET Framework і інтегрований з ним. Додатково PowerShell дозволяє виконувати звичайні команди командного рядка, щоб створити єдине оточення, в якому адміністратори змогли б виконувати різні завдання на локальних і віддалених системах.

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

Командлети - це спеціалізовані команди PowerShell, які реалізують різну функціональність. Це вбудовані в PowerShell команди. Командлети іменуються за правилом Дієслово-Іменник, наприклад, Get-ChildItem, завдяки чому їх призначення зрозуміло з назви. Командлети виводять результати у вигляді об'єктів або їх колекцій.

В PowerShell також можна створювати псевдоніми (alias) для командлетів, які при виклику перетворюються в оригінальні команди.

 

5.3. Командна оболонка UNIX

Командна оболонка UNIX (Unix shell) - командний інтерпретатор, який використовується в операційних системах сімейства UNIX, в якому користувач може або давати команди операційній системі окремо, або запускати скрипти, що складаються зі списку команд. В першу чергу, під shell розуміються POSIX-сумісні оболонки, похідні від Bourne shell (оболонки Борна), що з'явилася в Unix Version 7.

Bourne shell (часто sh по імені виконуваного файлу) - рання командна оболонка UNIX, розроблена Стівеном Борном з Bell Labs і випущена в складі 7-ї версії операційної системи UNIX. Дана оболонка є стандартом і доступна майже в будь-якому дистрибутиві *nix. Існує багато командних оболонок, заснованих (ідейно або безпосередньо) на Bourne shell.

Bourne shell колись входив в стандартну комплектацію всіх систем Unix, хоча історично в BSD системах було багато сценаріїв, написаних на csh. Сценарії sh, зазвичай, можуть бути запущені на bash або dash в GNU/Linux або інших Unix-подібних системах.

У багатьох системах Linux, /bin/sh є символічним посиланням на bash. Проте для кращої сумісності з вихідної утилітою sh деякі системи Linux (наприклад, Ubuntu) перенаправляють /bin/sh на dash.

Bash (Bourne again shell) – вдосконалена і модернізована варіація командної оболонки Bourne shell. Одна з найбільш популярних сучасних різновидів командної оболонки UNIX. Особливо популярна в середовищі Linux, де вона часто використовується в якості попередньо встановленою командної оболонки.

Bash - це командний процесор, що працює, як правило, в інтерактивному режимі в текстовому вікні. Bash також може читати команди з файлу, який називається скриптом (або сценарієм). Ключові слова, синтаксис та інші основні особливості мови були запозичені з sh. Інші функції, наприклад, історія, були скопійовані з csh і ksh. Bash в основному відповідає стандарту POSIX, але з рядом розширень.

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

C shell (csh) - командна оболонка UNIX з вбудованою скриптовою мовою, розроблена Біллом Джоем в 1979 році.

Базується на коді командного інтерпретатора шостої версії UNIX. Скриптова мова не поступається Bourne shell по потужності, але відрізняється синтаксисом. У той час як Борн скопіював всі основні оператори з мови Алгол 68, Білл Джой використав в якості макета мову Сі, ймовірно, керуючись своїми вподобаннями і уподобаннями інших користувачів BSD UNIX.

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

C shell увійшов в поставку 4.1BSD і до сих пір залишається базовою частиною всіх її нащадків, в тому числі FreeBSD і OpenBSD.

Korn shell (ksh) - командна оболонка UNIX, розроблена Девідом Корном (AT&T) в 1980-x роках. Має повну сумісність з Bourne shell і включає в себе можливості C shell. Є стандартом де-факто і використовується за замовчанням в деяких Unix-системах, наприклад, в AIX, OpenBSD і QNX. Має розвинену систему гарячих клавіш. До 2000 року код оболонки був закритим.

Xiki shell або xsh - нова командна оболонка, створена Крейгом Мутом.

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

Almquist shell (ash) - командна оболонка для UNIX і UNIX-подібних операційних систем. Являє собою одну з найменших оболонок, доступних для UNIX (за рахунок малих вимог до дискового простору, в порівнянні з іншими sh-сумісними оболонками). Цей командний інтерпретатор має 24 вбудовані команди і 10 різних опцій командного рядка.

Зазвичай ash використовується при завантаженні Linux в однокористувацькму режимі, в захищеному режимі або при завантаженні дискетних версій Linux. Також з її допомогою можна перевіряти скрипти на sh-сумісність. У NetBSD як /bin/sh працює саме ash.

Остання зміна: Saturday 30 May 2020 14:29 PM