Сайт о телевидении

Сайт о телевидении

» » Интерпретатор командной строки (shell). Командный интерпретатор

Интерпретатор командной строки (shell). Командный интерпретатор

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ЛАБОРАТОРНАЯ РАБОТА №1

КОМАНДНЫЙ ИНТЕРПРЕТАТОР

Цель лабораторной работы - ознакомление с командным языком системы UNIX (особенно с командами работы с файловой системой), с перенаправлением потоков ввода/вывода и с программными каналами.

1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1.1 Общие положения

интерпретатор файл команда программный

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

Работу ОС UNIX можно представить в виде функционирования множества взаимосвязанных процессов. При загрузке системы сначала запускается ядро, которое в свою очередь запускает основную задачу, порождающую все последующие процессы - процесс init (процесс № 1).

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

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

Каждый файл ОС UNIX может быть однозначно определен некоторой структурой данных, называемой описателем файла (дескриптором). Он содержит всю информацию о файле: тип файла, режим доступа, идентификатор владельца, размер, адрес файла, даты последнего доступа и последней модификации, дату создания и пр.

Обращение к файлу происходит по имени. Локальное имя файла представляет собой набор символов, в версии System V имеющий длину от 1 до 14. В системах, поддерживающих файловую систему FFS имена файлов могут содержать до 255 символов. В качестве символов следует использовать цифры, буквы латинского алфавита и символ `_". Локальное имя файла хранится в соответствующем каталоге . Путь к файлу от корневого каталога называется полным именем файла. Если обращение к файлу начинается с символа "/", то считается, что указано полное имя файла и его поиск начинается с корневого каталога, в любом другом случае поиск файла начинается с текущего каталога.

1.2 Регистрация в системе

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

· регистрационное имя пользователя;

· зашифрованный пароль;

· идентификатор пользователя;

· идентификатор группы;

· информацию о минимальном сроке действия пароля;

· общая информация о пользователе

· начальный каталог пользователя

· регистрационный shell пользователя

Если пользователь зарегистрирован в системе и ввел правильный пароль, login запускает программу, указанную в /etc/passwd - регистрационный shell пользователя.

1.3 Пользователи системы и владельцы файлов

Пользователь системы - это объект, обладающий определенными правами, определяющими возможность запуска программ на выполнение, а также владение файлами. Единственный пользователь системы, обладающий неограниченными правами - это суперпользователь или администратор системы .

Система идентифицирует пользователей по т.н. идентификатору пользователя (UID - User Identifier). Каждый пользователь является членом одной или нескольких групп - списка пользователей, имеющих сходные задачи. Каждая группа имеет свой уникальный идентификатор группы (GID - Group Identifier) Принадлежность группе определяет совокупность прав, которыми обладают члены данной группы.

Права пользователя UNIX - это прежде всего права на работу с файлами. Файлы имеют двух владельцев - пользователя (user owner) и группу (group owner).

Соответственно атрибуты защиты файлов определяют права пользователя-владельца файла (u), права члена группы-владельца (g) и права всех остальных (o).

1.4 Структура файловой системы

Файловая система ОС UNIX имеет иерархическую структуру, образующую дерево каталогов и файлов. Корневой каталог обозначается символом "/", путь по дереву каталогов состоит из имен каталогов, разделенных символом "/", например:

/home/work/document

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

Каталог «/» root имеет несколько важных системных директорий, которые содержат:

/stand - ядро системы и файлы данных, используемые в процессе загрузки.

Иногда файл ядра находится прямо в корневом каталоге /;

/sbin - основные исполняемые программы, используемые в процессе

загрузки и при восстановлении системы;

/dev - специальные файлы, которые представляют периферийные устройства (например, консоль, построчно-печатное устройство, терминалы пользователя и диски). В длинном листинге ls -l для каждого файла устройства вместо размера указывается два числа: major number и minor number. Major number идентифицирует для ядра драйвер устройства; аналогичные устройства имеют одинаковые major numbers. Minor number идентифицирует конкретный экземпляр устройства.

/etc - файлы конфигурации и базы данных организации системы;

/home - корневой каталог для каталогов пользователей;

/tmp - временные файлы;

/var - корневой каталог для часто изменяющихся файлов (например, файлы log); В подкаталогах каталога /var хранятся временные или служебные файлы различных программ. Основные подкаталоги каталога /var:

/var/log - журналы регистрации событий в системе.

/var/adm - журналы регистрации событий административного контекста.

/var/mail - новая (непрочитанная) поста пользователей.

/var/spool - различные очереди (на печать, на отправку почты, на выполнение заданий по расписанию).

/var/tmp - различные временные файлы.

/usr - другие каталоги, включая lib и bin.

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

Каждый каталог и файл файловой системы имеет уникальное полное имя - имя, задающее полный путь, оно задает полный путь от корня файловой системы через цепочку каталогов к соответствующему каталогу или файлу). Каталог, являющийся корнем файловой системы (корневой каталог), в любой файловой системе имеет предопределенное имя "/" (слэш). Этот же символ используется как разделитель имен в пути. Полное имя файла, например, /bin/sh означает, что в корневом каталоге должно содержаться имя каталога bin, а в каталоге bin должно содержаться имя файла sh. Коротким или относительным именем файла называется имя (возможно, составное), задающее путь к файлу от текущего рабочего каталога (существует команда и соответствующий системный вызов, позволяющие установить текущий рабочий каталог).

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

Так, например, для структуры, показанной на следующем рисунке доступ к отмеченному на рисунке файлу из текущего каталога возможен по полному имени:

/home/apalko/file2

или по относительному имени:

./../../apalko/file2

Рис.1 Пример дерева каталогов

Каталогам или файлам любые имена в соответствии со следующими правилами:

· допустимы все символы, за исключением /;

· некоторые имена лучше не использовать, такие как пробел, табуляция и следующие: ? " # $ ^ () ; < > | \ * @ " ~ &. Если Вы воспользуетесь символами пробела или табуляции в имени файла или справочника, то Вы должны заключить имя в двойные кавычки в командной строке;

· избегайте использования знаков + - или. в качестве первого символа в имени файла;

· система UNIX различает большие и маленькие буквы именах файлов и каталогов.

Каждый файл ОС UNIX может быть однозначно специфицирован некоторой структурой данных, называемой описателем файла или дескриптором. Эта структура описана в файле , она занимает 64 байта и содержит следующую информацию:

{ unsigned short di_mode; /* режим доступа и тип файла */

short di_nlink; /* счетчик числа ссылок на файл */

short di_uid; /* идентификатор его владельца */

short di_gid; /* идентификатор группы */

off_t di_size; /* счетчик числа байт в файле */

char di_addr; /* указатели на блоки диска, в которых хранится сам файл */

time_t di_atime; /* дата последнего доступа */

time_t di_mtime; /* дата последней модификации */

time_t di_ctime; /* дата создания */}

Поле di_mode состоит из 16-ти разрядов:

Рис.2. Режим доступа и тип файла

Поле di_addr используется для хранения указателей местоположения блоков диска, содержащих информацию, помещенную в данный файл. В этом поле может храниться 13 указателей, из которых первые 10 относятся к первым десяти блокам файла. Если файл занимает больше места, то в 11-й указатель заносится информация о местоположении первичного блока косвенности, состоящего из ста двадцати восьми 32-битных указателей на блоки файла; 12-й указатель указывает на вторичный блок косвенности, содержащий 128 указателей местоположения первичных блоков косвенности, а 13-й указатель, соответственно, указывает на местоположение третичного блока косвенности, включающего 128 указателей вторичного блока косвенности. Таким образом, используя эту схему адресации, можно обращаться к файлу, состоящему не более чем из (128x128x128+128x128+128+10) блоков. Все эти рассуждения справедливы для блоков размером 512 (128x4) байт.

Обращение к файлу происходит по имени. Локальное имя файла - это набор произвольных символов. Если в/среди них встречается точка, то за ней следует так называемое расширение, которое обычно служит для определения типа файла. Например, файлы, хранящие текст, чаще всего имеют расширение "txt" или "doc" (title.doc, book.txt и т.д.), файлы с текстом программ на языке С - расширение "c" (progr.c, code.c и т.п.), исполняемые файлы - расширение "out" или вовсе без расширений. Расширений может быть несколько (например, имя "progr.c.b" может означать старую версию (bak-файл) программы на языке С).

Локальное имя файла хранится в соответствующем каталоге. Путь к файлу от корневого каталога называется полным именем файла. Если обращение к файлу начинается с символа "/", то его поиск начинается с корневого каталога, в любом другом случае поиск файла начинается с текущего каталога. У любого файла может быть несколько имен. Фактически, имя файла является ссылкой на файл, специфицированный номером описателя. Таким образом, располагая имена одного и того же файла в разных каталогах можно в каждом каталоге иметь возможность обращаться к файлу напрямую, а не с помощью указания полного пути.

1 .4 . 1 Типы файлов

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

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

Каталог - это файл особого типа, отличающийся от обычного файла наличием структуры и ограничением по записи: осуществить запись в каталог может только ядро ОС UNIX. Каталог устанавливает соответствие между файлами (точнее, номерами описателей) и их локальными именами. Пример каталога для файловой системы ОС UNIX System V - Рис.2 (2 байта - номера описателей, 14 байтов - локальные имена).

Рис.3. Пример каталога UNIX System V

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

Совокупность всех каталогов специфицирует структуру файловой системы в целом.

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

Канал - это программное средство, связывающее процессы ОС UNIX буфером ввода/вывода

2. КОМАНДНЫЙ ЯЗЫК СИСТЕМЫ UNIX. ИНТЕРПРЕТАТОР SHELL

2.1 Общие положения

В этом разделе описаны команды и символы, имеющие специальное значение, которые позволяют:

Находить с помощью шаблона и манипулировать группами файлов;

Запускать команду в фоновом режиме или в определенное время;

Выполнять последовательно группу команд;

Перенаправлять стандартные ввод и вывод;

Завершать работающие программы.

Интерпретатор SHELL является оболочкой всей операционной системой и выполняет интерфейсные функции между пользователем и ОС. Он перехватывает и интерпретирует все команды пользователя, формирует и выводит ответные сообщения.

Помимо запуска на выполнение стандартных команд UNIX и исполняемых файлов, интерпретатор включает собственный язык, который по своим возможностям приближается к высокоуровневым языкам программирования. Этот язык позволяет создавать программы (shell-файлы, скрипты), которые могут включать операторы языка и команды UNIX. Такие файлы не требуют компиляции и выполняются в режиме интерпретации, но они должны обладать правом на исполнение (устанавливается с помощью команды chmod ).

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

Процедуре (скрипту) shell могут быть переданы аргументы при запуске. Каждому из первых девяти аргументов ставится в соответствие позиционный параметр от $1 до $9 ($0 - имя самой процедуры), и по этим именам к ним можно обращаться из текста процедуры.

Прежде, чем начать рассмотрение некоторых операторов shell, следует обратить внимание на использование в командах некоторых символов.

Ниже приведены метасимволы, используемые shell :

* ? - позволяют указывать сокращенные имена файлов при поиске по шаблону;

& - означает, что команда будет выполняться в фоновом режиме;

; - разделяет команды в командной строке;

\ - отменяет специальное значение символов, таких как *, ?, [, ], &, ;, <,

"..." - отменяют значение пробела как разделителя и специальное значение

всех символов;

"..." - отменяют значение пробела как разделителя и специальное значение всех символов, за исключением $ и \ ;

> - перенаправляет вывод команды в файл;

< - перенаправляет ввод команды из файла;

>> - перенаправляет вывод команды, который должен быть добавлен в

конец существующего файла;

| - создает канал, направляющий вывод одной команды во ввод другой

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

аргументы в командной строке;

$ - используется с позиционными параметрами и определенными поль-

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

качестве подсказки shell .

Кроме того, для удобства работы с файлами почти все командные интерпретаторы интерпретируют символы "?" и "*", используя их как шаблоны имен файлов (т.н. метасимволы ):

Один любой символ;

* - произвольное количество любых символов.

Например: *.c - задает все файлы с расширением "c";

pr???.* - задает файлы, имена которых начинаются с "pr", содержат пять символов и имеют любое расширение.

Переменные языка shell

Язык shell позволяет работать с переменными (без предварительного объявления). Имена переменных начинаются с буквы и могут включать буквы и цифры. Обращение к переменным начинается со знака "$".

Пример. Переход к начальному каталогу пользователя: cd $HOME

Оператор присваивания . Присвоение значений переменным осуществляется с помощью оператора `=" без пробелов.

Пример: s = Hello

echo $ s

2.2 Получение справки

Команда man файл , где файл - команда, программа, конфигурационный файл или библиотечная функция, по которой требуется получить справку. Справочник man состоит из нескольких разделов:

1: Команды пользователя

1M: Команды для системного администрирования

2: Системные вызовы

3 (3B,3S,...): Библиотечные функции

4: Форматы файлов

5: Заголовки, таблицы, макросы, разное

6: Демонстрации

7: Интерфейсы устройств и сети

При упоминании какой-либо команды, функции или системного файла в литературе по Unix часто в скобках указывается номер раздела справочника man , например: "команда ls(1) предназначена для вывода списка файлов". Как правило man сам находит раздел с требуемой справкой, просматривая все разделы по очереди, поэтому для получения справки по команде ls достаточно ввести

Управление скролингом текста:

· <пробел > - страница вниз

· <Enter > - строка вниз

· <Ctrl >+B - страница вверх

· /word - поиск слова word

· q - выход

Однако иногда требуемый термин может находиться сразу в нескольких разделах (printf - команда и библиотечная функция); в этом случае man выдаст документ из первого найденного раздела. Для получения документа из другого раздела используется ключ -s раздел . Для получения списка разделов, в которых встречается требуемый термин используется ключ -l. Ключ -a дает указание вывести все найденные справки из всех разделов друг за другом.

t ype команда - вывод данных о типе команды

which команда -определение в каком каталоге находится программа

2 .3 Команды работы с каталогами

pwd - печать имени текущего каталога. Например:

ls - вывод на экран содержимого каталога:

$ ls [-ключи] [имя каталога]

Если имя каталога не указано, выводится содержимое текущего каталога. Ключи определяют формат выдачи, например:

L - вывод полной информации о каждом файле;

A - вывод полного списка файлов, включая "." и "..";

T - сортировка списка по времени создания;

C - вывод списка в несколько колонок по алфавиту и т.п.

Пример : ls -l

выводит список файлов с их атрибутами, например:

ABBBBBBBBB C DDDD EEEEEEEE FFFFF GGGGGGGGGGGG HHHHH - см. ниже описание полей листинга

A. Тип файла

- обычный файл;

d каталог (фактически, каталог - это специальный файл, в котором перечислены файлы этого каталога);

l символическая связь (файл, содержащий имя другого файла - является сылкой на этот файл; подробности ниже в команде ln );

c символьное устройство (устройство, с которым операции чтения-записи производятся побайтно);

b блочное устройство (операции чтения-записи буферизуются). Некоторые устройства являются только символьными (например, последовательный порт), а некоторые представлены в обоих вариантах (например, диск).

p конвейер (pipe; программный канал, организованный в виде очереди, для передачи данных между двумя процессами).

B. Права на использование файла

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

для обычных файлов:

r - право на чтение содержимого файла

w - право на изменение содержимого файла

x - право на исполнение (запуск) файла

для каталогов:

r - право на получение списка файлов каталога

w - право на создание и удаление файлов в каталоге

x - право на "поиск" в каталоге

Набор прав --x для каталога позволяет войти в него и прочитать файл, имя которого заранее известно (при условии наличия прав чтения этого файла). Можно также выполнить команды ls и ls -l для этого файла. При этом получить список файлов (ls (-l) для каталога), а также создать или удалить файл нельзя.

Право r-- для каталога позволяет произвести чтение каталога, то есть получить список имен его файлов. При этом ни войти в каталог, ни узнать атрибуты файлов (ls -l ), ни прочесть файл (даже при наличии прав чтения этого файла) нельзя. Создать или удалить файл, естественно, нельзя.

Модификация файла требует прав на запись в файл, так как это операция над файлом. Удаление файла требует прав на запись в каталог, в котором находится этот файл - это операция над каталогом. Наличие права записи в файл не обязательно означает возможность его удалить (хотя можно размер файла уменьшить до нуля).

С. Число связей

Число жестких связей (имён) файла - подробнее см. ниже команду ln . Для каталога - число его подкаталогов (как минимум два - ". " точка и ".. " две точки ).

D. Пользователь-владелец файла

E. Группа-владелец файла

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

F. Размер файла в байтах

G. Дата последней модификации файла

H. Имя файла

cd - смена директории (каталога):

$ cd [полное_имя_каталога]

При этом указанный каталог станет текущим. Команда cd без аргументов восстановит в качестве текущего каталога начальный каталог пользователя.

mkdir - создание нового каталога:

$ mkdir [-ключи] имя_нового_каталога

Для создания нового каталога пользователь должен иметь право записи в родительский каталог текущего каталога.

rmdir - удаление каталога:

$ rmdir список_каталогов

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

du определение суммарного размера каталогов выводит информацию о суммарном размере файлов в указанном каталоге и - рекурсивно - его подкаталогах (плюс размер собственно каталога); ключ -k означает, что данные выводятся в килобайтах, иначе - в 512-байтных блоках. Если каталог не указан, подразумевается текущий. Ключ -s подавляет рекурсивный вывод информации о подкаталогах - команда сообщает только суммарный объем.

cp -R каталог-источник каталог-приемник. Рекурсивное копирование каталога в другой каталог

2.4 Команды работы с файлами

touch имя_файла изменяет время последней модификации файла на текущее. Побочный эффект: если файла нет, он создается с нулевым размером.

rm - удаление файлов (ссылок на файл):

$ rm [-ключи] список_файлов

Эта команда удаляет ссылки на файлы (то есть локальные имена файлов), если у пользователя есть право записи в каталог, содержащий эти имена. Если удаляемый файл защищен от записи, команда запрашивает подтверждение на удаление файла. Ключи:

· -i - вводит необходимость подтверждения для каждого удаляемого файла;

· -f - отменяет необходимость подтверждения для любого удаляемого файла;

· -r - задает режим рекурсивного удаления всех файлов и подкаталогов данного каталога, а затем и самого каталога.

Удаление файла на самом деле представляет собой уменьшение на 1 счетчика его имен в индексном дескрипторе; соответствующий системный вызов называется unlink(2). Физически файл удаляется системой если он закрыт и если счетчик имен равен нулю.

chmod - изменение атрибутов защиты файла:

chmod [-R] права файл_или_каталог [файл2 ...]

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

Права указываются в одной из двух нотаций: числовой и символьной.

Числовая нотация команды chmod

Набор прав разбивается на 4 тройки:

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

Лидирующий ноль можно опускать.

Символьная нотация команды chmod

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

Добавить группе право на запись:

%chmod g+w file

Убрать у прочих права на запись и исполнение:

%chmod o-wx file

Добавить владельцу и группе права на чтение и запись:

%chmod ug+rw file

Установить права прочих такими же, как у группы

%chmod o=g file

Установить права прочих и группы такими же, как у владельца

%chmod og=u file

Несколько изменений можно перечислять через запятую:

Добавить вдалеьцу право на исполнение, а у группы и прочих убрать право на запись:

%chmod u+x,go-w file

cat - слияние и вывод файлов на стандартное устройство вывода:

$ cat [-ключи] [входной_файл1[входной_файл2...]]

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

cp - копирование файлов:

$ cp вх_файл_1 [вх_файл_2 [...вх_файл_n]] вых_файл

Эта команда имеет два режима использования:

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

· если выходной файл есть каталог, то в него скопируются все указанные входные файлы, но каталог естественно должен быть создан заранее.

Пример . Скопировать два файла из текущего каталога в указанный с теми же именами:

$ cp f1.txt f2.txt ../usr/petr

mv - пересылка файлов:

$ mv вх_файл_1 [вх_файл_2 [...вх_файл_n]] вых_файл

Отличие команды пересылки от команды копирования состоит только в том, что входные файлы после выполнения команды уничтожаются.

Пример . Перенести файлы с расширением ".c" из указанного каталога в текущий:

ln управление символическими связями

Символическая связь - особый тип файла, содержащий имя другого файла (в листинге ls -l такие файлы обозначаются буквой l в первой колонке). Чтение-запись в файл-связь на самом деле приводят к чтению-записи в файл, на который он ссылается.

Создание символической связи:

ln -s сущетсвующий_файл файл_связь

Создание жесткой связи

В файловой системе UNIX имя файла является указателем на индексный дескриптор, который содержит атрибуты файла и массив адресов дисковых блоков, в которых находятся данные файла. Однако, индексный дексриптор не содержит ссылки на имя файла, следовательно, файл может иметь несколько имен. Дексриптор содержит только счетчик числа этих имен, значение которого показывается во второй колонке листинга ls -l .

Создание жесткой связи - это создание еще одного имени, ссылающегося на тот же самый индексный дескриптор:

ln сущетсвующее_имя_файла новое_имя_файла

2.5 Команды вывода содержимого файла

file имя_файла [имя_файла ...]

определяет тип файла путем анализа его содержимого

cat имя_файла

выводит содержимое файла на терминал.

more имя_файла

пейджер (выводит файл постранично, с остановом).

tail [- число ] имя_файла

выводит последние 10 строк файла либо указанное число

head [- число ] имя_файла

выводит первые 10 строк файла или сколько указано.

Команды работы с текстовыми файлами

grep - поиск шаблона (подстроки) в файлах:

$ grep [-ключи] подстрока список_файлов

Найденные строки выводятся на стандартный вывод в формате, определяемом ключами. Если файлов несколько, то перед каждой строкой выводится имя соответствующего файла. Ключи:

· -c - вывод имен всех файлов с указанием количества строк, содержащих шаблон;

· -i - игнорирование регистра (различия строчных и заглавных латинских букв);

· -n - вывод перед строкой ее относительного номера в файле;

· -v - вывод строк, не содержащих шаблона (инверсия вывода);

· -l - вывод только имен файлов, содержащих шаблон.

wc - подсчет количества строк, слов и символов в файлах:

$ wc [-lwc] [список_файлов]

Подсчет строк - ключ -l, слов - ключ -w и символов - ключ -c (по умолчанию -lwc). Если список файлов пуст, то подсчет ведется в стандартном потоке ввода.

· sort - сортировка файлов:

sort [-ключи] список_файлов

Эта команда сортирует входные файлы по строкам в соответствии с увеличением кодов символов. Ключи:

o -r - обратный порядок сортировки;

o -f - не учитывать различие строчных и прописных латинских букв

o -n - числовой порядок сортировки и т.д.

cmp - вывод места первого расхождения:

$ cmp файл_1 файл_2

Выводит номер символа и номер строки (в текстовых файлах), в которой впервые встречается расхождение во входных файлах. Работает с любыми файлами.

diff - вывод всех расхождений в файлах:

$ diff файл_1 файл_2

Выводит все строки, в которых встречаются расхождения между входными файлами. Работает только с текстовыми файлами.

2.6 Поиск в файловой системе

Поиск по содержимому файлов (grep )

Команда

%grep [-inv] подстрока файл [ файл2 ...]

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

Основные ключи:

I - игнорировать отличия верхнего и нижнего регистра (на нерусифицированных системах работает только для латиницы),

N - вместе со строками выводить и их номера,

V - выводить строки, в которых не найдена указанная подстрока .

Регулярные выражения

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

Метасимволы, используемые в регулярных выражениях

начало строки

конец строки

любой символ, заключенный в квадратные скобки; чтобы задать диапазон символов, в квадратных скобках указываются через дефис первый и последний символы диапазона

любой символ, кроме символов, заданных в квадратных скобках

любой отдельный символ

отменяет специальное значение следующего за ним метасимвола

указывает, что предыдущий шаблон встречается 0 или более раз

указывает, что предыдущий шаблон встречается ровно n раз

указывает, что предыдущий шаблон встречается не менее n раз

указывает, что предыдущий шаблон встречается не более n раз

указывает, что предыдущий шаблон встречается не менее n и не более m раз

Примеры регулярных выражений

ищутся строки, начинающиеся с буквосочетания "the"

ищутся строки, заканчивающиеся буквосочетанием "be"

ищутся строки, содержащие буквосочетания: "signal", "Signal", "signaL" или "SignaL"

ищутся строки, содержащие точку

ищутся строки, содержащие символы "th" в 4-й и 5-й позициях

ищутся строки, содержащие символы "th" в 54-й и 55-й позициях

ищутся строки, содержащие символы "th" в любых позициях между 11-й и 31-й

ищутся строки, состоящие из 5 любых символов

ищутся строки, начинающиеся с буквы "t" и заканчивающиеся буквой "e"

ищутся строки, содержащие комбинацию: цифра-прописная буква

ищутся строки, не содержащие цифр "1" или "2" или "3"

find каталог [выражение ... ]

Команда производит рекурсивный поиск в указанном каталоге и его подкаталогах. Для каждого файла вычисляются значения указанных в командной строке логических выражений , которые объединяются по "И". Если в итоге получается "ИСТИННО", то имя файла (точнее путь к нему, начиная от указанного в командной строке каталога , выводится в стандартный вывод). Отсутствие выражений - всегда "ИСТИННО" (то есть в это случае find рекурсивно выводит имена всех файлов каталога и его подкаталогов).

Основные выражения find

(Примечание: ниже везде, где есть числовой параметр N , перед ним можно ставить плюс или минус, при этом справедливо следующее правило: "+N " означает "больше, чем N ", "-N " означает "меньше, чем N ", просто число N означает "равно N ".)

-name шаблон_имени_файла

истинно, если имя файла соответствует шаблону; в шаблоне можно использовать символ "*" и т.п. - при этом шаблон надо взять в одинарные кавычки.

-perm ABCD

истинно, если права доступа к файлу точно равны указанным (ABCD ); права записываются в числовой нотации команды chmod .

-perm - ABCD

истинно, если указанные права доступа (ABCD ) имеются у файла; права записываются в числовой нотации команды chmod .

-type T

истинно, если тип файла равен указанному типу T , где Т - один из символов: f (обычный файл), d (каталог), l (символическая связь), b или c (блочное или символьное устройство), p (конвейер).

-user имя_пользователя

истинно, если файл принадлежит указанному пользователю.

-group имя_группы

истинно, если файл принадлежит указанной группе.

-size N c

истинно, если размер файла равен N байт (без символа "c" размер интерпретируется в 512-байтных блоках).

-mtime N

истинно, если содержимое файла было модифицировано N суток назад (т.е. N *24 часов назад).

-atime N

истинно, если последний доступ к файлу имел место N суток назад (т.е. N *24 часов назад).

-ctime N

истинно, если атрибуты файла были модифицировано N суток назад (т.е. N *24 часов назад).

-newer имя_файла

истинно, если файл был модифицирован позже, чем указанный.

истинно, если владелец файла не найден в списке пользователей (например, пользователь был удален, а его файлы остались).

-nogroup

истинно, если группа-владелец файла не найдена в списке групп (например, группа была удалена, а файлы остались).

операция "И" в явном виде.

операция "ИЛИ".

скобки для группировки выражений, если это необходимо (обратите внимание на наличие обратных слэшей).

Пример: найдите в домашнем каталоге все файлы, начинающиеся на "a":

%find . -name "a*"

найдите в домашнем каталоге все исполнимые владельцем файлы, начинающиеся на "a":

%find . -name "a*" -perm -0100

2.7 Подсистема управления заданиями

Подсистема управления заданиями (jobs) предназначена для интерактивной работы пользователя с шеллом. Если шелл поддерживает эту систему (/usr/bin/jsh, /usr/local/bin/bash ), то пользователь получает дополнительные возможности манипулировать запущенными процессами: перемещать их с переднего плана (foreground, интерактивное исполнение) в фоновый режим (background) и обратно, приостанавливать и возобновлять работу процессов. Каждая команда или конвейер, вводимые пользователем с терминала, называются заданиями (job). В терминах процессов задание представляет собой группу процессов. Каждое задание существует в одном из следующих состояний: интерактивное (foreground), фоновое (background) или приостановленное (stopped). Эти термины определяются следующим образом:

1. интерактивное задание выполняется и имеет доступ к управляющему терминалу для чтения и записи;

2. фоновое задание выполняется без доступа к управляющему терминалу, то есть при попытке осуществить запись или чтение с терминала, все процессы группы получат сигнал SIGTTOU или SIGTTIN и будут приостановлены;

3. приостановленное задание - это задание, находящееся в подвешенном состоянии в результате получения сигнала SIGSTOP, SIGTTIN или SIGTTOU; процессы присотановленного задания не выполняются, пока не будут переведены в интерактивное или фоновое состояние.

Каждое задание, запускаемое шеллом, получает целый положительный номер, который далее отслеживается шеллом и используется как идентификатор конкретного задания. Если вы запускаете некоторый процесс (конвейер) в фоновом режиме, то шелл выводит идентификатор запущенного процесса (группы процессов) и номер задания.

Вдобавок к этому shell отслеживает состояния "текущего" и "предыдущего" заданий. Текущим заданием является задание, запущенное в фоновом режиме или приостановленное из интерактивного состояния последним. Предыдущим заданием является последнее нетекущее задание. Текущее задание помечается в списке заданий плюсом, предыдущее - минусом.

Синтакис указания идентификатора задания имеет вид

где идентификатор jobid может быть указан в одном из следующих форматов:

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

bg [% jobid ]

Восстанавливает выполнение приостановленного задания, переводя его в фоновый режим. Если идентификатор задания %jobid

fg [% jobid ]

Восстанавливает выполнение приостановленного задания, переводя его в интерактивный режим; также переводит задание, выполняющееся в фоновом режиме в интерактивный. Если идентификатор задания %jobid опущен, то команда относится к текущему заданию.

jobs [-l] [% jobid ]

Выводит список заданий, приостановленных или выполняющихся в фоновом режиме. Если указан %jobid , собщает о конкретном задании. С ключом -l (буква "эль") выводит идентификаторы процессов.

kill [ - СИГНАЛ ] % jobid

Версия команды kill для заданий. Команда посылает процессам указаного задания указанный сигнал, по умолчанию - SIGTERM.

Нажатие комбинации -Z приостанавливает текущее интерактивное задание.

ps - получить список всех процессов:

ps [-ключи]

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

вывести информацию обо всех запущенных процессах;

-u пользователь

вывести информацию о процессах указанного пользователя;

"полный" листинг (см. таблицу ниже);

"длинный" листинг (см. таблицу ниже);

вывести индентификаторы группы процессов и сеанса.

Поля вывода команды ps

Описание

Состояние процесса:

O - выполняется (On processor ),

R - готов к запуску (Runnable ),

S - находится в состоянии сна (Sleeping ),

Z - зомби (Zombie ),

T - остановлен (Stopped ).

Идентификатор пользователя, от имени которого запущен процесс (с ключом -f выводится имя пользователя)

Идентификатор процесса

Идентификатор родительскогопроцесса

Идентификатор группы процессов

Идентификатор сеанса

Приоритет процесса (чем больше, тем ниже)

Относительный приоритет (Nice Number)

Размер процесса в страницах (размер страницы можно узнать командой pagesize )

Время запуска процесса

Управляющий терминал ("?" - для демонов)

Суммарное время, затраченное процессором на исполнение процесса

Имя процесса (с ключом -f выводятся первые 80 символов командной строки)

*) - в колонке Ключи указано, какой ключ надо дать команде ps , чтобы соответствующее поле появилось в выводе. Пометка "все " обозначает, что поле выводится всегда, в том числе и при запуске команды без ключей. Ключи -f, -l, -j можно использовать совместно для получения комбинированного вывода. Ключи -f, -l, -j не определяют, о каких процессах выводить данные, а устанавливают только формат вывода. Для отбора процессов используйте ключи -e, -u .

Команда ps имеет также ключ -o (буква "о"), параметром которого является список полей вывода через запятую. Таким образом можно выбрать только необходимые поля, а также вывести дополнительные данные о процессе, не перечисленные в таблице выше. Наименования полей для ключа -o см. в справочнике man .

2.8 Пользователи

Наличие или отсутствие пользователя в системе определяется записью в файле /etc/passwd . Каждая запись представляет собой строку, состоящую из семи полей, разделенных двоеточиями.

%more /etc/passwd

Поля, слева направо, имеют следующие значения:

1. USER - имя пользователя.

2. PASSWORD - в старых версиях Unix в этом поле хранился зашифрованный пароль пользователя; в современных версиях поле содержит "x", а зашифрованный пароль хранится в файле /etc/shadow , который доступен для чтения только суперпользователю.

3. UID - идентификатор пользователя - целое положительное число, 0 зарезервирован для суперпользователя.

4. GID - идентификатор группы, в которую входит пользователь.

5. GECOS - произвольный текстовый комментарий (как правило, имя и фамилия пользователя).

6. HOME - домашний каталог пользователя.

7. SHELL - шелл - программа, запускаемая для обслуживания сеанса работы пользователя в системе. Для обычных пользователей это - командный интерпретатор.

Если пользователь должен быть членом более одной группы, то для внесения его в другие группы, следует указать имя пользователя в соответствующей строке файла /etc/group .

%more /etc/group

Группа, которая указана для пользователя в файле /etc/passwd называется первичной группой этого пользователя, остальные группы, в которые он внесен согласно файлу /etc/group , - вторичными. Первчичная группа отличается от вторичных только в следующем:

· Когда пользователь создает файл (и у каталога не установлен бит SGID), то группой-владельцем нового файла будет первичная группа пользователя (владельцем файла будет он сам).

Файл /etc/group таким образом выполняет две функции: во-первых, он определяет имена и идентификаторы групп; во-вторых, указывает участие пользователей во вторичных для них группах.

Чтобы определить, в каких группах вы участвуете, надо подать команду

После входа пользователя в систему, текущим каталогом для него становится его домашний каталог (указанный в поле HOME в файле /etc/passwd ). Перед выводом приглашения командной строки шелл sh выполняет команды, записанный в файле .profile (начинается с точки), находящемся в домашнем каталоге пользователя (bash выполняет файл .bashrc ). В этом файле как правило устанавливаются переменные окружения (в первую очередь - переменная PATH) и какие-либо параметры сессии.

%more .profile

Обратите внимание на наличие текущего каталога (".") в списке PATH. Обратите внимание на команду export , которая помечает переменную как "экспортируемую", т.е. перменная будет передаваеться в окуржение дочерних процессов, запускаемых вашим шеллом; иначе она будет видна только внутри процесса шелла.

PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/local/bin:/usr/openwin/bin:.

Изменить переменную PATH "на ходу", добавив в нее еще один путь (в каталог prog, где находится программа hello) можно следующим образом:

%PATH=$PATH:./prog

%export PATH

%echo $PATH

(Знак доллара перед именем переменной означает подстановку значения этой переменной в командную строку.)

2.9 Перенаправление потоков и программные каналы

В ОС UNIX существует три стандартных потока: поток ввода, поток вывода и поток стандартного протокола (поток ошибок).

Перенаправление потоков позволяет изменить стандартный ввод (вывод):

< - изменение источника стандартного ввода;

>, >> - изменение приемника стандартного вывода.

Примеры :

cat > filename - перенаправление вывода программы cat в файл filename (если этот файл существует, то его прежнее содержимое будет утеряно);

cat >> filename - добавить содержимое вывода программы cat к содержимому файла filename;

cat < filename - сформировать стандартный ввод программы cat из содержимого файла filename.

Стандартные потоки - поток ввода, поток вывода и поток ошибок (поток протокола) имеют фиксированную нумерацию - 0, 1 и 2 соответственно. Эти номера (номера дескрипторов потоков) можно использовать в явном виде. Например, запись

prog 1>file

эквивалентна записи

prog >file

Для того, чтобы отличить имя потока от имени файла, перед номером потока ставится символ `&":

prog >file 2>&1

Здесь происходит перенаправление стандартного потока вывода в файл file (>file). А кроме того, сообщения об ошибках также будут перенаправлены в файл file: запись 2>&1 означает перенаправление потока ошибок на стандартный поток вывода, который, в свою очередь, был перенаправлен в файл.

Замечание : анализ команды осуществляется интерпретатором справа налево: сначала происходи слияние потоков (2>&1), а затем перенаправляется стандартный поток вывода (1) в файл file.

В связи с этим бывает полезно использование псевдоустройства /dev/null, удаляющего все введенные в него символы. Это используется тогда, когда необходимо полностью игнорировать (подавить) выходные потоки.

Канал - это программное средство, связывающее процессы ОС UNIX буфером ввода/вывода. Запуск процессов в виде

$ процесс_1 | процесс_2 | ... | процесс_n

означает, что стандартный вывод процесса _1 будет замкнут на стандартный ввод процесса _2, стандартный вывод процесса _2 будет замкнут на стандартный ввод процесса _3 и т.д. При этом сначала создается канал, а потом на выполнение одновременно запускаются все процессы, и общее время их выполнения определяется более медленным процессом.

...

Подобные документы

    Изучение подсистемы ввода-вывода и файловой системы ОС семейства Windows NT. Анализ особенностей работы приложения TotalCommander и его взаимодействия с файловой системой и подсистемой ввода-вывода. Взаимодействие TotalCommander с сетевыми адаптерами.

    лабораторная работа , добавлен 12.06.2012

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

    реферат , добавлен 23.03.2010

    Создание программы для среды UNIX, проверяющей атрибут выполнения файла для текущего пользователя. Особенности прав доступа для каталогов. Командный интерпретатор shell; общий синтаксис скрипта. Установка атрибутов защиты для групп пользователей.

    курсовая работа , добавлен 12.05.2013

    Файлы IO.SYS и MSDOS.SYS; командный процессор DOS. Базовая система ввода-вывода, загрузчик, диалог пользователя с DOS, команды. Недостатки языка програмирования с++. Создание и описание программы, позволяющей работать с файлами в среде DOS, ее алгоритм.

    курсовая работа , добавлен 02.12.2009

    Использование дистрибутива GNU/Linux Mandriva, который по праву считается одним из наиболее легких для освоения начинающими пользователями, для взаимодействия с командным интерпретатором GNU/Linux. Информация о формате и основных ключах команды cal.

    лабораторная работа , добавлен 28.12.2012

    Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.

    курсовая работа , добавлен 08.01.2014

    История развития ОС UNIX, ее достоинства. Управление компьютером под управлением UNIX. Интерпретация командной строки и структура файловой системы. Команды управления процессами. Средства системного администрирования и учетные записи пользователей.

    презентация , добавлен 12.05.2014

    Функции и основные компоненты систем программирования. Средства создания программ. Трансляторы языков программирования. Принципы и фазы работы компилятора, трансформация языка программирования в машинный код. Механизм преобразования интерпретатора.

    презентация , добавлен 07.02.2012

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

    методичка , добавлен 02.12.2009

    Описание файловой системы Unix. Работа основных команд ls, cmp, comm, их ключей. Разработка программного продукта, работающего в среде Windows и представляющего собой эмулятора командного процессора операционной системы Unix. Выбор средств реализации.

Лекция №1.

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

Термин «информатика» был впервые введён в Германии Карлом Штейнбухом в 1957 году. В 1962 году этот термин был введён во французский язык Ф. Дрейфусом, который также предложил переводы на ряд других европейских языков. В советской научно-технической литературе термин «информатика» был введён А. И. Михайловым, А. И. Черным и Р. С. Гиляревским в 1968 году.

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

Лекция №2.

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

Двоичная система счисления используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1.

Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.

Десятичная система счисления используется для кодирования дискретного сигнала, потребителем которого является так называемый конечный пользователь – неспециалист в области информатики (очевидно, что и любой человек может выступать в роли такого потребителя). Используемые знаки для представления числа – цифры от 0 до 9.

Прямой код двоичного числа образуется из абсолютного значения этого числа и кода знака (нуль или единица) перед его старшим числовым разрядом.

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


Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. Знак “+” в этих кодах кодируется двумя нулевыми знаковыми разрядами, а “-” - двумя единичными разрядами.

Лекция №3.

Алгебра логики – это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности и ложности) и логических операций над ними.

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

В алгебре логики основными (элементарными) операциями являются:

отрицание,

логическое сложение (дизъюнкция),

логическое умножение (конъюнкция),

импликация,

эквивалентность.

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

Логической функцией называется функция f (X1,X2,...,Xn) , которая, так же как и ее аргументы, может принимать только два значения (0 и 1).

Так же, как и в алгебре арифметики, в алгебре логики устанавливается приоритет выполнения логических операций. Они упорядочены в следующей последовательности: отрицание; конъюнкция; дизъюнкция; импликация; эквивалентность.

Лекция №4.

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

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

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

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

Из минтермов и макстернов методом суперпозиции можно составить логические функции, которые называются соответственно логической функцией, представленной посредством совершенных дизъюнктивных нормальных форм (СДНФ), и логической функцией, представленной посредством совершенных конъюнктивных нормальных форм (СКНФ). Полученные таким образом функции СДНФ и СКНФ будут представлять искомую логическую функцию по заданной таблице истинности.

Лекция №5

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

Также - совокупность программ, процедур и правил, а также документации, относящихся к функционированию системы обработки данных.

Программное обеспечение компьютера постоянно пополняется, развивается, совершенствуется. Стоимость установленных программ на современном ПК зачастую превышает стоимость его технических устройств. Разработка современного ПО требует очень высокой квалификации от программистов.

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

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

Лекция №6

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

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

Сегодня наиболее известными операционными системами являются ОС семейства Microsoft Windows и UNIX-подобные системы.

Интерфейсные функции:

Управление аппаратными средствами, устройствами ввода- вывода

Файловая система

Поддержка многозадачности (разделение использования памяти, времени выполнения)

Ограничение доступа, многопользовательский режим работы (если взять к примеру ДОС, то он не может быть многопользовательским)

Сеть (взять спектрум в пример...)

Внутренние функции:

Обработка прерываний

Виртуальная память

"Планировщик" задач

Буферы ввода- вывода

Обслуживание драйверов устройств

Лекция №7

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

В общем случае, различают оболочки с двумя типами интерфейса для взаимодействия с пользователем: текстовый пользовательский интерфейс (TUI) и графический пользовательский интерфейс (GUI).

Командный интерпретатор.

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

В операционные системы MS-DOS и Windows 9x включён командный интерпретатор command.com, в Windows NT включён cmd.exe. В большом семействе командных оболочек UNIX наиболее популярны bash, csh, ksh, zsh, в UNIX-подобных системах у пользователя есть возможность менять командный интерпретатор, используемый по умолчанию.

Функции.

Командный интерпретатор исполняет команды своего языка, заданные в командной строке или поступающие из стандартного ввода или указанного файла.

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

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

Лекция №8

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

Условно выделяют два типа редакторов: потоковые текстовые редакторы и интерактивные.

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

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

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

Лекция №9

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

Электронные таблицы (или табличные процессоры) - это прикладные программы, предназначенные для проведения табличных расчетов. Появление электронных таблиц исторически совпадает с началом распространения персональных компьютеров. Первая программа для работы с электронными таблицами - табличный процессор, была создана в 1979 году, предназначалась для компьютеров типа Apple II и называлась VisiCalc. Одним из самых популярных табличных процессоров сегодня является MS Excel, входящий в состав пакета Microsoft Office.

Лекция №10

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

История

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

В 1961 году программист С. Рассел возглавил проект по созданию первой компьютерной игры с графикой. Создание игры («Космические войны») заняло около 200 человеко-часов. Игра была создана на машине PDP-1.

В 1963 году американский учёный Айвен Сазерленд создал программно-аппаратный комплекс Sketchpad, который позволял рисовать точки, линии и окружности на трубке цифровым пером. Поддерживались базовые действия с примитивами: перемещение, копирование и др. По сути, это был первый векторный редактор, реализованный на компьютере. Также программу можно назвать первым графическим интерфейсом, причём она являлась таковой ещё до появления самого термина.

В середине 1960-х гг. появились разработки в промышленных приложениях компьютерной графики. Так, под руководством Т. Мофетта и Н. Тейлора фирма Itek разработала цифровую электронную чертёжную машину. В 1964 году General Motors представила систему автоматизированного проектирования DAC-1, разработанную совместно с IBM.

В 1968 году группой под руководством Н. Н. Константинова была создана компьютерная математическая модель движения кошки. Машина БЭСМ-4, выполняя написанную программу решения дифференциальных уравнений, рисовала мультфильм «Кошечка», который для своего времени являлся прорывом. Для визуализации использовался алфавитно-цифровой принтер.

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

Аннотация: Рассматриваются внутренние команды, поддерживаемые интерпретатором Cmd.exe, и наиболее часто используемые внешние команды (утилиты командной строки). Описываются механизмы перенаправления ввода/вывода, конвейеризации и условного выполнения команд. Даются примеры команд для работы с файловой системой

Оболочка командной строки Windows. Интерпретатор Cmd.exe

В операционной системе Windows , как и в других операционных системах, интерактивные (набираемые с клавиатуры и сразу же выполняемые) команды выполняются с помощью так называемого командного интерпретатора, иначе называемого командным процессором или оболочкой командной строки ( command shell ). Командный интерпретатор или оболочка командной строки - это программа , которая, находясь в оперативной памяти, считывает набираемые вами команды и обрабатывает их. В Windows 9x, как и в MS-DOS , командный интерпретатор по умолчанию был представлен исполняемым файлом command . com . Начиная с версии Windows NT, в операционной системе реализован интерпретатор команд Cmd.exe, обладающий гораздо более мощными возможностями.

Запуск оболочки

В Windows NT/2000/XP файл Cmd.exe, как и другие исполняемые файлы, соответствующие внешним командам операционной системы, находятся в каталоге %SystemRoot%\SYSTEM32 (значением переменной среды %SystemRoot% является системный каталог Windows, обычно C:\Windows или C:\WinNT). Для запуска командного интерпретатора (открытия нового сеанса командной строки) можно выбрать пункт Выполнить… (Run) в меню Пуск (Start), ввести имя файла Cmd.exe и нажать кнопку OK. В результате откроется новое окно (см. рис. 2.1), в котором можно запускать команды и видеть результат их работы.


Рис. 2.1.

Внутренние и внешние команды. Структура команд

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором - такие команды называются внутренними (например, COPY или DIR ) Другие команды операционной системы представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и Cmd.exe, которые Windows загружает и выполняет аналогично другим программам. Такие команды называются внешними (например, MORE или XCOPY ).

Рассмотрим структуру самой командной строки и принцип работы с ней. Для того, чтобы выполнить команду, вы после приглашения командной строки (например, C:\> ) вводите имя этой команды (регистр не важен), ее параметры и ключи (если они необходимы) и нажимаете клавишу . Например:

C:\>COPY C:\myfile.txt A:\ /V

Имя команды здесь - COPY , параметры - C:\myfile.txt и A:\ , а ключом является /V . Отметим, что в некоторых командах ключи могут начинаться не с символа /, а с символа – (минус), например, -V .

Многие команды Windows имеют большое количество дополнительных параметров и ключей, запомнить которые зачастую бывает трудно. Большинство команд снабжено встроенной справкой, в которой кратко описываются назначение и синтаксис данной команды. Получить доступ к такой справке можно путем ввода команды с ключом / ?. Например, если выполнить команду ATTRIB / ?, то в окне MS-DOS мы увидим следующий текст:

Отображение и изменение атрибутов файлов. ATTRIB [+R|-R] [+A|-A] [+S|-S] [+H|-H] [[диск:][путь]имя_файла] + Установка атрибута. - Снятие атрибута. R Атрибут "Только чтение". A Атрибут "Архивный". S Атрибут "Системный". H Атрибут "Скрытый". /S Обработка файлов во всех вложенных папках указанного пути.

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

В этом случае после заполнения очередного экрана вывод помощи будет прерываться до нажатия любой клавиши. Кроме того, используя символы перенаправления вывода > и >> , можно текст, выводимый на экран, направить в текстовый файл для дальнейшего просмотра. Например, для вывода текста справки к команде XCOPY в текстовый файл xcopy.txt, используется следующая команда:

XCOPY /? > XCOPY.TXT

Замечание

Вместо имени файла можно указывать обозначения устройств компьютера. В Windows поддерживаются следующие имена устройств: PRN (принтер), LPT1 –LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал: при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).

Перенаправление ввода/вывода и конвейеризация (композиция) команд

Рассмотрим более подробно поддерживаемые в Windows UNIX-подобные концепции переназначения устройств стандартного ввода/вывода и конвейерного выполнения команд.

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

  • выводить сообщения программ не на экран (стандартный выходной поток), а в файл или на принтер (перенаправление вывода);
  • читать входные данные не с клавиатуры (стандартный входной поток), а из заранее подготовленного файла (перенаправление ввода);
  • передавать сообщения, выводимые одной программой, в качестве входных данных для другой программы (конвейеризация или композиция команд).

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

команда > имя_файла

Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал - создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:

команда >> имя_файла

С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:

команда < имя_файла

Приведем несколько примеров перенаправления ввода/вывода.

  1. Вывод встроенной справки для команды COPY в файл copy.txt:

    COPY /? > copy.txt

  2. Добавление текста справки для команды XCOPY в файл copy.txt:

    XCOPY /? >> copy.txt

  3. Ввод новой даты из файла date.txt (DATE - это команда для просмотра и изменения системной даты):

    DATE < date.txt

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

команда 2> имя_файла

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

Оболочкой (shell) в системеUNIXназывают механизм взаимодействия между пользователями и системой. По сути дела, это интерпретатор команд, который считывает набираемые пользователем строки и запускает выполнение запрошен­ных системных функций. Полный командный язык, интерпретируемый оболоч­кой, богат по возможностям и достаточно сложен, однако большинство команд просты в использовании и запомнить их не составляет труда.

Командная строка состоит из имени команды (то есть имени выполняемого фай­ла), за которым следует список аргументов, разделённых пробелами. Оболочка разбивает командную строку на компоненты. Указанный в команде файл загружается, и ему обеспечивается доступ к заданным в команде аргументам.

Любой командный язык семейства shellфактически состоит из трёх частей:

 служебных конструкций, позволяющих манипулировать с текстовыми строками и строить сложные команды на основе простых команд;

 встроенных команд, выполняемых непосредственно интерпретатором команд­ного языка;

 команд, представляемых отдельными выполняемыми файлами.

В свою очередь, набор команд последнего вида включает стандартные команды (системные утилиты, такие как vi,ccи т. д.) и команды, созданные пользователями системы. Для того чтобы выполняемый файл, разработанный пользовате­лем ОСUNIX, можно было запускать как командуshell, достаточно определить в одном из исходных файлов функцию с именемmain(имяmainдолжно быть глобальным, то есть перед ним не должно указываться ключевое словоstatic). Если употребить в качестве имени команды имя такого выполняемого файла, команд­ный интерпретатор создаст новый процесс и запустит в нём указанную выпол­няемую программу, начиная с вызова функцииmain.

Тело функции main, вообще говоря, может быть произвольным (для интерпрета­тора существенно только наличие входной точки в программу с именемmain), но для того, чтобы создать команду, которой можно задавать параметры, нужно придерживаться некоторых стандартных правил. В этом случае каждая функцияmainдолжна определяться с двумя параметрами –argcиargv. После вызова ко­манды параметруargcбудет соответствовать число символьных строк, указан­ных в качестве аргументов вызова команды, аargv– массив указателей на пе­ременные, содержащие эти строки. При этом имя самой команды составляет первую строку аргументов (то есть после вызова значениеargcвсегда больше или равно 1). Код функцииmainдолжен проанализировать допустимость задан­ного значенияargcи соответствующим образом обработать заданные текстовые строки.

Например, следующий текст на языке С может быть использован для создания команды, которая выводит на экран текстовую строку, заданную в качестве её аргумента:

#include

main(argc, argv)

printf(“usage: %s your-text\n”, argv);

printf(“%s\n”, argv);

Процессы

Процесс в ОС UNIXпонимается в классическом смысле этого термина, то есть как программа, выполняемая в собственном виртуальном адресном пространст­ве. Когда пользователь входит в систему, автоматически создается процесс, в ко­тором выполняется программа командного интерпретатора. Если командному интерпретатору встречается команда, соответствующая выполняемому файлу, то он создает новый процесс и запускает в нём соответствующую программу, начи­ная с функцииmain. Эта запущенная программа, в свою очередь, может создать процесс и запустить в нём другую программу (она тоже должна содержать функ­циюmain) и т. д.

Для образования нового процесса и запуска в нём программы используются два системных вызова API–fork() и ехес(имя_выполняемого_файла). Системный вызовforkприводит к созданию нового адресного пространства, состояние которого абсолютно идентично состоянию адресного пространства основного процесса (то есть в нём содержатся те же программы и данные). Для дочернего процесса заво­дятся копии всех сегментов данных.

Другими словами, сразу после выполнения системного вызова forkосновной (родительский) и порожденный процессы являются абсолютными близнецами;

управление и в том и в другом находится в точке, непосредственно следующей за вызовом fork. Чтобы программа могла разобраться, в каком процессе она те­перь работает – в основном или порождённом, функцияforkвозвращает разные значения: 0 в порождённом процессе и целое положительное число (идентифи­катор порождённого процесса – так называемыйPID) в основном процессе.

Теперь, если мы хотим запустить новую программу в порождённом процессе, нужно обратиться к системному вызову ехес, указав в качестве аргументов вызо­ва имя файла, содержащего новую выполняемую программу, и, возможно, одну или несколько текстовых строк, которые будут переданы в качестве аргументов функции mainновой программы. Выполнение системного вызова ехес приводит к тому, что в адресное пространство порожденного процесса загружается но­вая выполняемая программа и запускается с адреса, соответствующего входу в функциюmain. Другими словами, это приводит к замене текущего программно­го сегмента и текущего сегмента данных, которые были унаследованы при вы­полнении вызоваfork, на новые соответствующие сегменты, заданные в файле. Прежние сегменты теряются. Это эффективный метод смены выполняемой про­цессом программы, но не самого процесса. Файлы, уже открытые до выполнения примитива ехес, остаются открытыми после его выполнения.

В следующем примере пользовательская программа, вызываемая как команда shell, выполняет в отдельном процессе стандартную командуshellls, которая выдаёт на экран содержимое текущего каталога файлов.

if (fork ()==(0) wait(0); /* родительский процесс */

else execl("ls", "Is", 0); /* порождённый процесс */

Таким образом, с практической точки зрения процесс в UNIXявляется объектом, создаваемым в результате выполнения функцииfork(). Каждый процесс, за исключением начального (нулевого), порождается в результате запуска дру­гим процессом операции fork(). Каждый процесс имеет одного родителя, но мо­жет породить много процессов. Начальный (нулевой) процесс является особенным процессом, который создается в результате загрузки системы. После порожде­ния нового процесса с идентификатором 1 нулевой процесс становится процес­сом подкачки и реализует механизм виртуальной памяти. Процесс с идентифика­тором 1, известный под именемinit, является предком любого другого процесса в системе и связан с каждым процессом особым образом.

Чтобы обеспечить взаимодействие пользователя с операционной системой и с прикладными программами необходим интерфейс: система передачи команд пользователя операционной системе и ответов системы обратно пользователю. Такое взаимодействие представляет собой «диалог» пользователя с компьютером на специальном языке, будь то язык, использующий знаки, похожие на слова и высказывания естественного языка, или язык изображений. На сегодня известны две принципиальные возможности организации интерфейса: графический интерфейс и командная строка.

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

При работе с командной строкой для организации интерфейса используются специальные программы - командные интерпретаторы. Они принимают от пользователя выдаваемые им команды в виде строк текста, содержащих имена программы и параметры, с которыми эти программы следует выполнить, производят разбор полученных строк, запускают необходимые программы и передают пользователю их вывод - также строки текста. Всё взаимодействие пользователя с системой происходит через командный интерпретатор, поэтому его часто называют оболочкой (shell). Для выполнения типовых действий последовательности команд оказываются одинаковыми. Такие последовательности команд можно записать в текстовый файл и далее передать этот текстовый файл командному интерпретатору для выполнения. Такие текстовые файлы называются скриптами. Для запуска они должны иметь соответствующие права (флаг "x"). Командные интерпретаторы поддерживают условное выполнение команд (структуры if-then-else), циклы, создание и вызовы подпрограмм и т.п. Язык командного интерпретатора исключительно мощный и позволяет автоматизировать практически любую задачу в системе. Например, действия при загрузке системы осуществляются скриптами командного интерпретатора - начиная от /etc/rc.d/rc.sysinit, который, в свою очередь, вызывает большое количество других скриптов.

В системах *nix, в соответствии с их модульным построением, доступны несколько командных интерпретаторов. В-основном сейчас используется интерпретатор bash (/bin/bash).

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

Общий формат вызова команды выглядит следующим образом:

$ command -f --flag --key=parameter argument1 agrument2 ...

Здесь "$" - это приглашение операционной системы к вводу команды. Для обычных пользователей оно имеет вид "$", для суперпользователя (root) - "#". В дальнейшем для команд, которые требуют привилегий root, будет использоваться запись вида "# command".

command - имя команды. Для часто использующихся команд имена короткие, состоящие из 2-3 букв.

После имени команды, при необходимости, указываются ключи. Ключ - параметр команды, который влияет на результат её выполнения. Часто использующиеся ключи - короткие, односимвольные; для требующихся реже длинных ключей используются слова или сокращения. Короткие ключи начинаются с символа "-", длинные - с двух символов "-". Короткие ключи часто дублируются длинными - для повышения читабельности скриптов. После ключей может допускаться указание дополнительных параметров, для длинных ключей такие параметры принято записывать через знак "=". Несколько односимвольных ключей разрешается объединять вместе: например, вместо "$ ls -l -a" можно записать "$ ls -la".

Порядок ключей, как правило, не важен.

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

$ touch -- -file-with-

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

Обычно программы поддерживают несколько стандартных ключей. По ключу "-h" или "--help" выдаётся краткая справка о программе. По ключу "-v" или "--version" - её версия. Если краткой справки не достаточно, то можно вызвать описание программы в справочной системе. Для работы со справкой используется команда man (сокращение от "manual" - руководство). Команда man в качестве аргумента принимает имя команды или файла конфигурации, ищет и выводит на экран страницу справочного руководства. В справке, выдаваемой командой man, содержится информация о формате вызова программы, поддерживаемых ей ключах и параметрах, информация об авторах и лицензии программы, в ряде случаев - примеры использования, ссылки на сайты разработчиков с дополнительной документацией.

Для просмотра страниц руководства, не помещающихся на экране, следует использовать прокрутку клавишами перемещения курсором, "Page Up" и "Page Down". Пробел перемещает руководство на страницу вперёд. Для выхода из man и продолжения работы с системой следует нажать клавишу "q" (quit).

Часть программ, помимо руководств в формате "man", также имеют и более пространную документацию в формате "info" - с вызовом её через одноимённую утилиту.

В отличии от встроенной системы подсказки программ в операционной системе Windows, руководства man и info содержат полную подробную техническую информацию о работе команд.