Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Основные положения. Оболочка C-shell выполняет две основные функции: поддержка интерактивного режима работы с ОС и программирование пакетного режима выполнения команд

Читайте также:
  1. I. ОБЩИЕ ПОЛОЖЕНИЯ
  2. I. ОБЩИЕ ПОЛОЖЕНИЯ
  3. I. ОБЩИЕ ПОЛОЖЕНИЯ
  4. I. ОБЩИЕ ПОЛОЖЕНИЯ
  5. I. ОБЩИЕ ПОЛОЖЕНИЯ
  6. I. ОБЩИЕ ПОЛОЖЕНИЯ
  7. I. ОБЩИЕ ПОЛОЖЕНИЯ
  8. I. ОБЩИЕ ПОЛОЖЕНИЯ
  9. I. ОБЩИЕ ПОЛОЖЕНИЯ
  10. I. ОБЩИЕ ПОЛОЖЕНИЯ

Оболочка C-shell выполняет две основные функции: поддержка интерактивного режима работы с ОС и программирование пакетного режима выполнения команд. Программирование в C-shell более удобное, чем в shell и синтаксис языка близок к синтаксису языка Си. Как интерпретатор, C-shell получает команды пользователя с терминала или из простого командного файла и порождает процессы, соответствующие командам. Как язык программирования C-shell содержит переменные, управляющие операторы и операторы-модификаторы. Переменные в качестве значений получают слова и массивы слов.

 

Командная строка состоит из списка слов и их разделителей. Интерпретатор различает также метасимволы.

разделители:; () < > & | <таб> <пробел>

метасимволы:! $: *,? [ ] { } @ ~. ^

Существуют три разновидности кавычек для использования в командах: двойные, одинарные правые и одинарные левые.

 

"строка в двойных кавычках" интерпретируется всегда - в ней могут использоваться метасимволы и выполняются подстановки значений переменных.

 

'строка в одинарных правых кавычках' - не интерпретируется и все метасимволы не заменяются значениями (исключение – метасимвол `!` - он экранируется обратным слэшем `\`).

 

`строка в одинарных левых кавычках` - интерпретируется как командная, выполняется и заменяется результатом выполнения.

 

Можно выполнить любую последовательность команд, разделяя их символом ';' в одной командной строке: cd /mnt/stud; ls -l. Для управления выполнением последовательности команд используются логические связки '||', '&&' и круглые скобки ().

 

Пусть А и В - команды ОС,

А && В - команда В выполняется, если А завершается успешно;

А || В - команда В выполняется, если А заканчивается с ошибкой.

Для организации последовательной обработки потока данных используется возможность соединения стандартного вывода одной команды со стандартным вводом следующей - т. наз. конвейеризация. Для обьединения команд в конвейер они разделяются символом '|':

ls -la | sort | more

В C-shell предусмотрена возможность выполнения команд в асинхронном (фоновом) режиме, для этого в конце команды ставится символ '&': ls -l > /dev/lp&

 

Для переназначения потоков ввода/вывода используются следующие разделители: >, <, >>, <<, >&, >>&. Команда OC 'tee' дублирует стандартный вывод.

 

В языке C-shell определены следующие типы переменных:

- слово

- строка

- массив слов

- позиционная переменная.

Имя переменной - любая последовательность символов и цифр (кроме метасимволов). Переменная определяется оператором присваивания (или вычисления выражения):

set VAR = word1

@ IVAR = 128

set SVAR = "$VAR BC"('')

set MVAR = ($VAR $IVAR 45f)

Для указания того, что используется значение переменной, перд ее именем без пробела ставится символ '$'. Символы '#' и '?'используются для управления режимами подстановок. Существуют три режима подстановок:

- подстановка собственного значения переменной;

- подстановка собственного значения позиционной переменной;

- подстановка информации о переменной.

 

Форматы подстановок:

$var или ${var} - значение переменной

$mas[n] - значение n-го элемента массива

$?var - 1 или 0 в зависимости от того, определена переменнная или нет

$#mas - размерность массива.

$n эквивалентно $argv[n] - n-я позиционная переменная.

Для чтения строки с клавиатуры есть конструкция '$<'

set answer = $<

 

B C-shell числом считается символьная строка, которая может интерпретироваться как целое число. Символ '@' в начале строки означает, что указанные далее слова (имена переменных и т. п.) образуют выражение. Результатом или аргументом логического выражения может быть 1 (не 0) - истина или 0 - ложь.

Операции:

1) логические и отношения: ==,!= (в т. числе и для сравнения строк),||,&&,<,>,<=,>=,! (унарная);

2) арифметические: +,-,/,%,*,++,--;

3) поразрядные логические: &,^,~,|,>>,<<;

4) присваивания =,+=,<<= и т. п. (как в языке Си).

 

Старшинство операций представляется слева направо следующим рядом: ||,&&,|,^,&,==,!=,<=,>=,<,>,<<,>>,+,-,*,/,%,!,~,().

Переменные в C-shell делятся на два вида - внешние (рассматривались выше) и внутренние (используются для задания среды запускаемого процесса).

 

Интерпретатор может порождать один или несколько процессов, каждому из которых ОС присваивает уникальный номер – идентификатор процесса (process ID или PID). Есть два вида идентификаторов - системный (его показывает команда 'ps') и внутренний. Внутренний идентификатор присваивается процессу командным интерпретатором конкретного пользователя.

Процесс может находиться в двух состояниях – выполняться или быть приостановленным.

Завершить синхронный процесс можно с помощью ^C или команды kill c ключем -9, а асинхронный - только с помощью "kill".

Приостановить процессы можно так:

синхронные - ^s или ^z;

асинхронные - stop %внутр_ид возобновить на выполнение

синхронный процесс - команда "fg",

асинхронный - "bg".

Для получения внутренних идентификаторов процессов есть команда jobs (ключ -l позволяет получить более подробную информацию).

 




Дата добавления: 2014-12-19; просмотров: 121 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.293 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав