Unix / Linux - что такое оболочки?

А Shellпредоставляет вам интерфейс к системе Unix. Он собирает данные от вас и выполняет программы на их основе. Когда программа завершает выполнение, она отображает вывод этой программы.

Оболочка - это среда, в которой мы можем запускать наши команды, программы и сценарии оболочки. Есть разные варианты оболочки, так же как и разные операционные системы. Каждая разновидность оболочки имеет свой собственный набор распознаваемых команд и функций.

Подсказка оболочки

Подсказка, $, который называется command prompt, выдается оболочкой. Пока отображается запрос, вы можете ввести команду.

Shell читает ваш ввод после того, как вы нажмете Enter. Он определяет команду, которую вы хотите выполнить, глядя на первое слово вашего ввода. Слово - это непрерывный набор символов. Слова разделяются пробелами и табуляциями.

Ниже приводится простой пример date команда, которая отображает текущую дату и время -

$date
Thu Jun 25 08:30:19 MST 2009

Вы можете настроить командную строку, используя переменную среды PS1, описанную в руководстве по среде.

Типы оболочки

В Unix есть два основных типа оболочек:

  • Bourne shell - Если вы используете оболочку типа Борна, $ символ - приглашение по умолчанию.

  • C shell - Если вы используете оболочку C-типа, по умолчанию используется символ%.

Bourne Shell имеет следующие подкатегории -

  • Оболочка Борна (ш)
  • Корн оболочка (кш)
  • Bourne Again оболочка (bash)
  • Оболочка POSIX (sh)

Следуют различные оболочки C-типа -

  • Оболочка C (csh)
  • Оболочка TENEX / TOPS C (tcsh)

Первоначальная оболочка Unix была написана в середине 1970-х Стивеном Р. Борном, когда он работал в AT&T Bell Labs в Нью-Джерси.

Оболочка Борна была первой оболочкой, появившейся в системах Unix, поэтому ее называют «оболочкой».

Оболочка Bourne обычно устанавливается как /bin/shв большинстве версий Unix. По этой причине это оболочка выбора для написания сценариев, которые можно использовать в разных версиях Unix.

В этой главе мы собираемся охватить большинство концепций Shell, основанных на Borne Shell.

Скрипты оболочки

Основная концепция сценария оболочки - это список команд, перечисленных в порядке выполнения. У хорошего сценария оболочки будут комментарии, которым предшествует# знак, описывающий шаги.

Существуют условные тесты, например, значение A больше значения B, циклы, позволяющие нам просматривать огромные объемы данных, файлы для чтения и хранения данных и переменные для чтения и хранения данных, а сценарий может включать функции.

В следующих разделах мы напишем много скриптов. Это будет простой текстовый файл, в который мы поместим все наши команды и несколько других необходимых конструкций, которые сообщают среде оболочки, что и когда делать.

И сценарии оболочки, и функции интерпретируются. Это означает, что они не компилируются.

Пример сценария

Предположим, мы создаем test.shсценарий. Обратите внимание, что все сценарии будут иметь.shрасширение. Прежде чем добавлять что-либо еще в свой сценарий, необходимо предупредить систему о запуске сценария оболочки. Это делается с помощьюshebangпостроить. Например -

#!/bin/sh

Это сообщает системе, что следующие команды должны выполняться оболочкой Bourne. Это называется шебанг, потому что#символ называется хешем, а символ! символ называется челкой .

Чтобы создать сценарий, содержащий эти команды, вы сначала помещаете строку shebang, а затем добавляете команды -

#!/bin/bash
pwd
ls

Комментарии оболочки

Вы можете поместить свои комментарии в свой сценарий следующим образом -

#!/bin/bash

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls

Сохраните вышеуказанный контент и сделайте скрипт исполняемым -

$chmod +x test.sh

Сценарий оболочки теперь готов к выполнению -

$./test.sh

После выполнения вы получите следующий результат -

/home/amrood
index.htm  unix-basic_utilities.htm  unix-directories.htm  
test.sh    unix-communication.htm    unix-environment.htm

Note - Чтобы выполнить программу, доступную в текущем каталоге, используйте ./program_name

Расширенные сценарии оболочки

В сценариях оболочки есть несколько обязательных конструкций, которые сообщают среде оболочки, что и когда делать. Конечно, большинство скриптов сложнее, чем приведенный выше.

В конце концов, оболочка - это настоящий язык программирования, в котором есть переменные, управляющие структуры и так далее. Каким бы сложным ни был сценарий, это все равно список команд, выполняемых последовательно.

В следующем сценарии используется read команда, которая принимает ввод с клавиатуры и присваивает его как значение переменной PERSON и, наконец, печатает его на STDOUT.

#!/bin/sh

# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:

echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

Вот пример запуска скрипта -

$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$