Свободные программы и системы в школе

Автор: Пользователь скрыл имя, 17 Ноября 2014 в 19:57, статья

Краткое описание

Зачем программам быть свободными?
Право и экономика ПО.
Применимость СПО при реализации «Обязательного минимума.
Логика и последовательность освоения СПО.

Файлы: 1 файл

Отставнов Свободные программы и системы в школе.rtf

— 2.67 Мб (Скачать)

Многовариантное условное исполнение

Для многовариантного условного исполнения в зависимости от значения строковой переменной оболочка поддерживает оператор «case» с на редкость причудливым синтаксисом (Рис. 1-86).

 

Рис. 1-86

 

Указанная строка (обычно – результат раскрытия значения переменной) поочередно сравнивается с шаблонами и при первом совпадении выполняется соответствующий список команд (до конструкции «;;»), после чего выполнение оператора «case» завершается.

Строки, указанные в качестве шаблонов, подвергаются обычному раскрытию, за исключением того, что специальные символы «*», «*», «[ ... ]» не приводят к поиску файлов, а используются (по тем же правилам, что и при раскрытии шаблонов имен файлов) как метасимволы при сравнении.

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

Ввод-вывод

Вывод значений переменных и выражений сценарием как правило осуществляется известной нам командой «echo» или командой «printf» (предназначенной для форматированного вывода), которую мы в этом курсе не рассматриваем.

Ввести данные (т.е. присвоить значения переменным) можно с помощью команды «read». Эта команда читает из стандартного ввода строку, разделяет ее на отдельные аргументы (пробелами, табуляцией, знаком переноса или символами, содержащимися в переменной окружения $IF), и присваивает их перечисленным в команде переменным. Если аргументов оказывается больше, чем переменных, остаток строки присваивается последней переменной (Рис. 1-87).

 

Рис. 1-87

 

Однако во многих случаях вывод (и ввод) осуществляется не только командой «echo», но и прочими командами, применяемыми в сценарии. Следует понимать, что каждая команда, ввод-вывод которой не переназначен явно и не включен в конвейер, наследует , в числе прочих атрибутов, дескрипторы стандартных ввода-вывода от подающего ее процесса. Таким образом, переназначив, например, стандартный вывод сценария в файл, мы тем самым переназначаем стандартный вывод каждой вызываемой программы, если только ее вывод не переназначается отдельно или не передается по конвейеру.

Передача аргументов сценарию

Как и любая команда, сценарий, написанный на языке оболочки, может вызываться с позиционными параметрами (ключами и операндами).

Сценарию эти параметры доступны посредством ряда специальных переменных, перечисленных в таблице на Рис. 1-88.

 

Рис. 1-88

 

Стандарт не предоставляет каких-либо средств поддержки грамматического разбора командной строки; обычно для этого используется комбинация операторов «for» и операторов условного исполнения.

Функции и вызов других сценариев

В сценарии на языке оболочки можно определить подпрограммы-функции. В функции определенными являются переменные, определенные сценарием (или его окружением) на момент вызова функции. Однако сама функция должна быть объявлена до ее вызова. Кроме того, функции при вызове можно передавать параметры (как любой команде), которые она может адресовать способом, указанным выше (Рис. 1-88).

Определение функции имеет вид, указанный на Рис. 1-89.

 

Рис. 1-89

 

Вызывается функция простым указанием ее имени в качестве команды (см. Рис. 1-90).

 

Рис. 1-90

 

Раскрытие команды

Крайне занимательной является возможность раскрыть  целую команду, то есть включить в командную строку ее стандартный вывод. Для этого команда заключается в обратные апострофы «`» и «`», которые не следует путать ни с одиночными прямыми апострофами, ни с кавычками.

 

Рис. 1-91

 

В примере на Рис. 1-91 команда «echo» подается с тремя операндами, первый и последний из которых являются текстовыми константами, а второй – результатом раскрытия команды «ls *~ *.tmp», то есть списком файлов, соответствующих первому и второму шаблонам, указанным в качестве операндов команды «ls».

Включенный документ

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

На Рис. представлена конструкция вида «<<цепочка», внешне похожая на перенаправление ввода команды из файла. Однако цепочка представляет собой не имя файла, а ограничивающую цепочку символов, а сам ввод осуществляется непосредственно из файла сценария (или, в данном случае, с терминала) до тех пор, пока очередная строка не совпадет с ограничивающей цепочкой (Рис. 1-92).

 

Рис. 1-92

 

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

1.11 Справочник по наиболее употребительным стандартным командам ОС

 

exit - завершить исполнение оболочки

Синтаксис:  exit [код_зав]

Семантика:  exit завершает исполнение оболочки с кодом возврата (0-255), указанным в «код_зав». Перехват «exit» командой «trap» выполняется до завершения оболочки, если только «exit» выполняется не из этой команды «trap». Если n не указана, код возврата равен коду возврата последней выполненной команды. При выполнении «exit» из «trap» последней командой считается команда, выполненная непосредственно до выполнения «trap».

cal - вывести календарь

Синтаксис:  cal [[месяц] год ]

Семантика:  cal выводит на стандартный вывод календарь, используя юлианское летоисчисление для дат с 1 января 1 г. по 2 сентября 1752 г. и григорианское - с 14 сентября 1752 г. по 31 декабря 9999 г.

Операнды: месяц  – отображаемый месяц указывается десятичным числом с 1 (январь) по 12 (декабрь). По умолчанию – текущий месяц. Год  – отображаемый год указывается десятичным числом с 1 до 9999. По умолчанию – текущий год.

date – вывести или установить дату и время

Синтаксис:  date [ -u] [ +формат ] ; date [ -u] ммддччмм [[сс ]гг ]

Семантика:  date выводит дату и время. Поданная с операндом в формате даты, date пытается установить время и дату. Операнд, начинающийся с «+» устанавливает формат вывода данных.

Ключ:  -u – выполнить команду, как если бы переменная TZ (часовой пояс) была установлена в «UTC0» или "GMT0" (время по Гринвичу).

Операнды:  +формат – если указан формат, каждый спецификатор формата заменяется при выводе на соответствующее значение. Вывод всегда завершается символом новой строки. Поддерживаются спецификаторы «%a» (краткое название дня недели), «%A» (название дня недели), «%b», «%h» (краткое название месяца), «%B» (название месяца), «%с» (дата и время), «%C» (век в двузначном представлении), «%d» (день месяца в двузначном представлении), «%D» (дата в формате мм/дд/гг), «%e» (день месяца в одно- или двузначном представлении), «%H» (час дня в 24-часовом двузначном представлении), «%I» (час дня в 12-часовом двузначном представлении), «%j» (номер дня в году), «%m» (номер месяца в двузначном представлении), «M» (минуты в двузначном представлении), «%n» (конец строки), «%p» (знак «утра» или «пополудни»), «%r» (час дня в двенадцатичасовом представлении со знаком «утра» или «пополудни»), «%S» (секунды в двузначном представлении), «%t» (табуляция), «%T» (время в формате ЧЧ:ММ:СС в 24-часовом представлении), «%u» (порядковый номер дня недели («Пн.»=1), «%U» (порядковый номер недели в году при неделе, начинающейся в воскресенье), «%V» (номер недели в году при неделе, начинающейся в понедельник), «%w» (номер дня недели, начинающейся с воскресенья), «%W» (номер недели, начинающейся в понедельник), «%x» (полное представление даты), «%X» (полное представление времени), «%y» (год в двузначном представлении), «%Y» (год в одно- или двузначном представлении), «%Z» (часовой пояс), «%%» (процент).

Переменные:  TZ – часовой пояс, в котором выводится или устанавливается дата.

Вывод:  если формат не указан, дата выводится в формате «+%a %b %e %H:%M:%S %Z %Y».

man - вывести системную документацию

Синтаксис:  man [ -k] имя ...

Семантика:  man выводит информацию о каждом из перечисленных операндов.

Ключ: -k  – интерпретировать операнды как ключевые слова для поиска в базе кратких описаний и вывести строки, в которых содержатся эти слова.

Операнды: имя  – ключевое слово или имя команды.

Переменные:  PAGER – используемый фильтр постраничного вывода.

echo – вывести аргументы

Синтаксис : echo [строка ...]

Семантика: echo выводит свои аргументы после раскрытия специальных символов в стандартный вывод, завершая вывод символом новой строки.

Операнды : строка – строка, подлежащая выводу. В строке после раскрытия спецсимволов оболочки раскрываются следующие символы: \a – звуковой сигнал, \b – пробел, \c – подавить вывод символа новой строки, \f – перевод страницы, \n – символ конца строки, \r – символ возврата каретки, \t – табуляция, \v – вертикальная табуляция, \\ – обратная косая черта, \0код –  символ с восьмеричным кодом «код».

Стандартный вывод:  между аргументами выводятся пробелы.

touch - изменить временные атрибуты доступа и модификации файлов

Синтаксис:  touch [ -acm][  -r справ_файл | -t time ] файл ...

Семантика:  touch изменяет атрибуты времени последней модификации или времени последнего доступа файлов, или (по умолчанию) оба. Значение атрибута указывается аргументом ключа «-t» или заимствуется у файла, указанного в качестве аргумента ключа «-r». Если оно не указано, используется текущее время.

Если файлы не существуют, они создаются.

Ключи:  -a – изменить время доступа, -c – не создавать несуществующих файлов, -m – изменить время модификации, -r справ_файл – заимствовать атрибут у файла «справ_файл»; -t время – использовать вместо текущего указанное время в формате «[[ВВ]ГГ]ММДДччмм[.сс]», где ММ – номер месяца, ДД – день месяца, чч – час дня, мм – минуты, ВВ – первые две цифры года, ГГ – последние две цифры года, сс – секунды.

Операнды:  файл – имя файла.

ls – вывести содержимое каталога

Синтаксис:  ls [ -CFRacdilqrtu1][ -H | -L ][ -fgmnopsx][файл ...]

Семантика:  Для каждого операнда, именующего файл типа иного, нежели каталог или ссылка на каталог, ls выводит имя и требуемую ключами информацию. Для каждого операнда, именующего каталог или ссылку на каталог, ls выводит имена и требуемую ключами информацию о каждом файле, содержащемся в этом каталоге. Если операнды не указаны, ls выводит информацию о файлах в текущем каталоге. Для ссылок на каталоги выводится информация о каталоге, если даны ключи «-d», «-F» или «-l» и не даны ключи «-H» или «-L», и информация о файлах в каталоге, если не даны ключи «-d», «-F» или «-l» или даны ключи «-H» или «-L».

Важнейшие ключи: -R  – выводить рекурсивно информацию о подкаталогах; -a  – включить информацию о скрытых файлах (файлах с именами, начинающимися на точку), -l  («эль») – выводить информацию в «длинном» формате; -p  – выводить после имен каталогов «/»; -t  -- отсортировать в порядке времени изменения.

Операнды:  файл – имя файла.

Переменные: COLUMNS  – количество столбцов на терминале; TZ  – часовой пояс.

Вывод:  по умолчанию выводится по одной записи в строке. -l – выводятся тип и права файла, количество ссылок, имя владельца, имя группы, длина файла, дата и время, имя файла.

rm – удалить записи о файлах

Синтаксис:  rm [ -fiRr] файл ...

Семантика:  rm удаляет запись в каталоге для каждого операнда за исключением файлов «.» или «..» в любом каталоге и за исключением (если не даны ключи «-r», «-R») каталогов.

Ключи: -f  – не запрашивать подтверждения; -i – запрашивать подтверждение; -r, -R  – рекурсивно удалять содержимое указанных каталогов.

Операнды:  файл – имя файла.

Вывод ошибок:  стандартный вывод ошибок используется для вывода запросов на подтверждение удаления файлов («-i»).

mkdir – создать каталог

Синтаксис:  mkdir [-p][-m права] каталог...

Семантика:  mkdir создает перечисленные каталоги.

Операнды:  каталог – создаваемый каталог.

rmdir – удалить каталоги

Синтаксис:  rmdir [ -p] каталог ...

Семантика:  rmdir удаляет записи, соответствующие указанным пустым каталогам.

Операнды:  каталог – удаляемый каталог.

cp – копировать файлы

Синтаксис:  cp [-fip] исх_файл цел_файл ; cp [-fip] исх_файл... каталог ; cp -R [-H | -L | -P][-fip] исх_файл... каталог ; cp -r [-H | -L | -P][-fip] исх_файл... каталог

Семантика:  первая синтаксическая форма характеризуется двумя файлами, ни один из которых не должен быть существующим каталогом. cp копирует исх_файл в цел_файл. Если исх_файл – символическая ссылка, копируется целевой файл этой ссылки.

Вторая синтаксическая форма характеризуется двумя или более операндами, отсутствием ключей «-R» или «-r» и неприменимостью первой формы. Исходные файлы не должны быть каталогами, а каталог должен быть существующим каталогом. cp копирует исходные файлы в указанный каталог под именами, совпадающими с краткими именами исходных файлов.

Третья и четвертая форма характеризуется двумя или более операндами и ключами «-r» или «-R». cp копирует все указанные файлы, а также рекурсивно каталоги с их содержимым в каталог.

Важнейшие ключи: -i  – запрашивать подтверждение перед копированием в существующие файлы; -p  – сохранять по возможности времена изменения и доступа к файлу, владельца и группу, права доступа; -R, -r – рекурсивно копировать содержимое каталогов.

Операнды:  исх_файл – исходный файл; цел_файл – целевой файл; каталог – целевой каталог.

Стандартный вывод ошибок:  стандартный вывод ошибок используется для вывода запросов на подтверждение перезаписи существующих файлов («-i»).

mv – переместить файлы

Синтаксис:  mv [-fi] исх_файл цел_файл ; mv [-fi] исх_файл... каталог

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

Информация о работе Свободные программы и системы в школе