Командный интерпретатор
Ознакомление с командным языком системы UNIX (командами работы с файловой системой), перенаправлением потоков ввода/вывода и программными каналами. Основы работы интерпретатора SHELL, а также управление заданиями, архивированием и сжатием файлов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 28.02.2015 |
Размер файла | 87,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на 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, запрашивающую у пользователя имя и пароль.
Далее происходит проверка аутентичности пользователя в соответствии с той информацией, которая хранится в файле /etc/passwd. В этом файле хранятся записи, содержащие
· регистрационное имя пользователя;
· зашифрованный пароль;
· идентификатор пользователя;
· идентификатор группы;
· информацию о минимальном сроке действия пароля;
· общая информация о пользователе
· начальный каталог пользователя
· регистрационный 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 может быть однозначно специфицирован некоторой структурой данных, называемой описателем файла или дескриптором. Эта структура описана в файле <fcntl.h>, она занимает 64 байта и содержит следующую информацию:
struct dinode
{ unsigned short di_mode; /* режим доступа и тип файла */
short di_nlink; /* счетчик числа ссылок на файл */
short di_uid; /* идентификатор его владельца */
short di_gid; /* идентификатор группы */
off_t di_size; /* счетчик числа байт в файле */
char di_addr[40]; /* указатели на блоки диска, в которых хранится сам файл */
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 байтов - локальные имена).
Номер описателя |
Имя файла |
|
5412 |
. |
|
81 |
.. |
|
3009 |
bin |
|
3413 |
text.txt |
|
0 |
cross.c |
|
3601 |
move.o |
Рис.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 достаточно ввести
man ls
Управление скролингом текста:
· <пробел> - страница вниз
· <Enter> - строка вниз
· <Ctrl>+B - страница вверх
· /word - поиск слова word
· q - выход
Однако иногда требуемый термин может находиться сразу в нескольких разделах (printf - команда и библиотечная функция); в этом случае man выдаст документ из первого найденного раздела. Для получения документа из другого раздела используется ключ -s раздел. Для получения списка разделов, в которых встречается требуемый термин используется ключ -l. Ключ -a дает указание вывести все найденные справки из всех разделов друг за другом.
type команда - вывод данных о типе команды
which команда -определение в каком каталоге находится программа
2.3 Команды работы с каталогами
pwd - печать имени текущего каталога. Например:
ls - вывод на экран содержимого каталога:
$ ls [-ключи] [имя каталога]
Если имя каталога не указано, выводится содержимое текущего каталога. Ключи определяют формат выдачи, например:
-l - вывод полной информации о каждом файле;
-a - вывод полного списка файлов, включая "." и "..";
-t - сортировка списка по времени создания;
-C - вывод списка в несколько колонок по алфавиту и т.п.
Пример: ls -l
выводит список файлов с их атрибутами, например:
-rwxr-xr-- 1 vm97 students 24380 Feb 3 2000 hello
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 тройки:
sst rwx rwx rwx
и рассматривается в виде битового поля: бит установлен, если соответствующее право имеется. Каждая тройка бит записывается десятичным числом.
Примеры
--- rwx rwx rwx |
0777 |
|
--- rwx r-x r-x |
0755 |
|
--- rw- r-- --- |
0640 |
|
ss- rwx r-x r-x |
6755 |
|
--t rwx r-x r-- |
1754 |
Лидирующий ноль можно опускать.
Символьная нотация команды chmod
В отличие от числовой нотации символьная нотация указывает не права, а изменения прав. Нотация состоит из 3 элементов, указанных в следующей последовательности: чьи права изменять, каким образом, и какие именно права.
Чьи права изменять |
Каким образом |
Какие именно права |
|
u (владельца) g (группы) o (всех остальных) a (всех трех категорий) |
+ (добавить) - (убрать) |
R W x |
|
= (сделать такими же) |
u (как у владельца) g (как у группы) o (как у всех остальных) |
||
U g |
+ - |
s (SUID или SGID) |
|
U |
+ |
t (Sticky bit) |
Примеры:
Добавить группе право на запись:
%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" из указанного каталога в текущий:
$ mv petr/*.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 раз |
|
\{,n\} |
указывает, что предыдущий шаблон встречается не более n раз |
|
\{n,m\} |
указывает, что предыдущий шаблон встречается не менее n и не более m раз |
Примеры регулярных выражений
^the |
ищутся строки, начинающиеся с буквосочетания "the" |
|
Be$ |
ищутся строки, заканчивающиеся буквосочетанием "be" |
|
[Ss]igna[lL] |
ищутся строки, содержащие буквосочетания: "signal", "Signal", "signaL" или "SignaL" |
|
\. |
ищутся строки, содержащие точку |
|
^...th |
ищутся строки, содержащие символы "th" в 4-й и 5-й позициях |
|
^.*\{53\}th |
ищутся строки, содержащие символы "th" в 54-й и 55-й позициях |
|
^.*\{10,30\}th |
ищутся строки, содержащие символы "th" в любых позициях между 11-й и 31-й |
|
^.....$ |
ищутся строки, состоящие из 5 любых символов |
|
^t.*e$ |
ищутся строки, начинающиеся с буквы "t" и заканчивающиеся буквой "e" |
|
[0-9][a-z] |
ищутся строки, содержащие комбинацию: цифра-прописная буква |
|
[^123] |
ищутся строки, не содержащие цифр "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 Nc
истинно, если размер файла равен N байт (без символа 'c' размер интерпретируется в 512-байтных блоках).
-mtime N
истинно, если содержимое файла было модифицировано N суток назад (т.е. N*24 часов назад).
-atime N
истинно, если последний доступ к файлу имел место N суток назад (т.е. N*24 часов назад).
-ctime N
истинно, если атрибуты файла были модифицировано N суток назад (т.е. N*24 часов назад).
-newer имя_файла
истинно, если файл был модифицирован позже, чем указанный.
-nouser
истинно, если владелец файла не найден в списке пользователей (например, пользователь был удален, а его файлы остались).
-nogroup
истинно, если группа-владелец файла не найдена в списке групп (например, группа была удалена, а файлы остались).
-a
операция "И" в явном виде.
-o
операция "ИЛИ".
\( \)
скобки для группировки выражений, если это необходимо (обратите внимание на наличие обратных слэшей).
Пример: найдите в домашнем каталоге все файлы, начинающиеся на "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
где идентификатор jobid может быть указан в одном из следующих форматов:
+ |
текущее задание |
|
- |
предыдущее задание |
|
?string |
задание, командная строка которого содержит уникальную строку string. |
|
N |
задание номер n |
|
pref |
задание, в котором pref является уникальным префиксом имени команды (например, если команда find / запущена в фоновом режиме, на это задание можно сослаться как %find); pref не может содержать пустых символов, если они не взяты в кавычки. |
При включенной подсистеме управления заданиями в целях манипуляции заданиями в пользовательскую среду добавляются следующие команды:
bg [%jobid]
Восстанавливает выполнение приостановленного задания, переводя его в фоновый режим. Если идентификатор задания %jobid опущен, то команда относится к текущему заданию.
fg [%jobid]
Восстанавливает выполнение приостановленного задания, переводя его в интерактивный режим; также переводит задание, выполняющееся в фоновом режиме в интерактивный. Если идентификатор задания %jobid опущен, то команда относится к текущему заданию.
jobs [-l] [%jobid]
Выводит список заданий, приостановленных или выполняющихся в фоновом режиме. Если указан %jobid, собщает о конкретном задании. С ключом -l (буква "эль") выводит идентификаторы процессов.
kill [ -СИГНАЛ ] %jobid
Версия команды kill для заданий. Команда посылает процессам указаного задания указанный сигнал, по умолчанию - SIGTERM.
Нажатие комбинации <Ctrl>-Z приостанавливает текущее интерактивное задание.
ps - получить список всех процессов:
ps [-ключи]
o При отсутствии ключей будет выведен список процессов самого пользователя (идентификатор процесса, номер терминала и время процессора, затраченное на процесс). Ключи:
-e
вывести информацию обо всех запущенных процессах;
-u пользователь
вывести информацию о процессах указанного пользователя;
-f
"полный" листинг (см. таблицу ниже);
-l
"длинный" листинг (см. таблицу ниже);
-j
вывести индентификаторы группы процессов и сеанса.
Поля вывода команды ps
Поле |
Описание |
Ключи* |
|
S |
Состояние процесса:O - выполняется (On processor),R - готов к запуску (Runnable),S - находится в состоянии сна (Sleeping),Z - зомби (Zombie),T - остановлен (Stopped). |
l |
|
UID |
Идентификатор пользователя, от имени которого запущен процесс (с ключом -f выводится имя пользователя) |
f,l |
|
PID |
Идентификатор процесса |
все |
|
PPID |
Идентификатор родительскогопроцесса |
f,l |
|
PGID |
Идентификатор группы процессов |
j |
|
SID |
Идентификатор сеанса |
j |
|
PRI |
Приоритет процесса (чем больше, тем ниже) |
l |
|
NI |
Относительный приоритет (Nice Number) |
l |
|
SZ |
Размер процесса в страницах (размер страницы можно узнать командой pagesize) |
l |
|
STIME |
Время запуска процесса |
f |
|
TTY |
Управляющий терминал ('?' - для демонов) |
все |
|
TIME |
Суммарное время, затраченное процессором на исполнение процесса |
все |
|
CMD |
Имя процесса (с ключом -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 таким образом выполняет две функции: во-первых, он определяет имена и идентификаторы групп; во-вторых, указывает участие пользователей во вторичных для них группах.
Чтобы определить, в каких группах вы участвуете, надо подать команду
%groups
После входа пользователя в систему, текущим каталогом для него становится его домашний каталог (указанный в поле HOME в файле /etc/passwd). Перед выводом приглашения командной строки шелл sh выполняет команды, записанный в файле .profile (начинается с точки), находящемся в домашнем каталоге пользователя (bash выполняет файл .bashrc). В этом файле как правило устанавливаются переменные окружения (в первую очередь - переменная PATH) и какие-либо параметры сессии.
%more .profile
Обратите внимание на наличие текущего каталога (".") в списке PATH. Обратите внимание на команду export, которая помечает переменную как "экспортируемую", т.е. перменная будет передаваеться в окуржение дочерних процессов, запускаемых вашим шеллом; иначе она будет видна только внутри процесса шелла.
Рекомендуемое значение переменной PATH:
PATH=/usr/bin:/usr/sbin:/usr/ccs/bin:/usr/ucb:/usr/local/bin:/usr/openwin/bin:.
Изменить переменную PATH "на ходу", добавив в нее еще один путь (в каталог prog, где находится программа hello) можно следующим образом:
%hello
%PATH=$PATH:./prog
%export PATH
%echo $PATH
%hello
(Знак доллара перед именем переменной означает подстановку значения этой переменной в командную строку.)
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 с сетевыми адаптерами.
лабораторная работа [1,1 M], добавлен 12.06.2012Иерархическая структура файловой системы Unix. Согласованная обработка массивов данных, возможность создания и удаления файлов, буферный кэш. Защита информации, трактовка периферийных устройств как файлов. Внутренняя структура файловой системы Unix.
реферат [102,2 K], добавлен 23.03.2010Создание программы для среды UNIX, проверяющей атрибут выполнения файла для текущего пользователя. Особенности прав доступа для каталогов. Командный интерпретатор shell; общий синтаксис скрипта. Установка атрибутов защиты для групп пользователей.
курсовая работа [18,8 K], добавлен 12.05.2013Файлы IO.SYS и MSDOS.SYS; командный процессор DOS. Базовая система ввода-вывода, загрузчик, диалог пользователя с DOS, команды. Недостатки языка програмирования с++. Создание и описание программы, позволяющей работать с файлами в среде DOS, ее алгоритм.
курсовая работа [24,4 K], добавлен 02.12.2009Использование дистрибутива GNU/Linux Mandriva, который по праву считается одним из наиболее легких для освоения начинающими пользователями, для взаимодействия с командным интерпретатором GNU/Linux. Информация о формате и основных ключах команды cal.
лабораторная работа [2,4 M], добавлен 28.12.2012Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.
курсовая работа [804,0 K], добавлен 08.01.2014История развития ОС UNIX, ее достоинства. Управление компьютером под управлением UNIX. Интерпретация командной строки и структура файловой системы. Команды управления процессами. Средства системного администрирования и учетные записи пользователей.
презентация [78,1 K], добавлен 12.05.2014Функции и основные компоненты систем программирования. Средства создания программ. Трансляторы языков программирования. Принципы и фазы работы компилятора, трансформация языка программирования в машинный код. Механизм преобразования интерпретатора.
презентация [3,3 M], добавлен 07.02.2012Изучение основных правил проектирования операционных систем. Структура файловой системы. Компоненты, обеспечивающие способы организации, поиска и управления информацией. Краткий обзор специальных и обыкновенных файлов. Основные команды системы UNIX.
методичка [36,4 K], добавлен 02.12.2009Описание файловой системы Unix. Работа основных команд ls, cmp, comm, их ключей. Разработка программного продукта, работающего в среде Windows и представляющего собой эмулятора командного процессора операционной системы Unix. Выбор средств реализации.
курсовая работа [183,0 K], добавлен 29.04.2015Этапы загрузки Linux-системы, регистрация. Управление учетными записями пользователей. Принцип именования устройств, назначение и применение специальных файлов. Управление файлами, доступом к файловой системе, заданиями. Базовая файловая структура Linux.
методичка [1,6 M], добавлен 15.11.2014Характеристика, разновидности, архитектура процессоров. Понятие интерфейса, описание видов шин, внешних запоминающих устройств, особенности конструкции. Специфика файловой системы устройства подсистемы ввода/вывода, достоинства, недостатки, база данных.
курс лекций [747,0 K], добавлен 24.06.2009Общая организация файловой системы. Виртуальные страницы. Команды для работы с ФС. Способы организации файлов. Системные вызовы управления процессами. Алгоритм работы планировщика процессов. Мультипрограммный режим работы ОС. Структура ядра системы.
курсовая работа [645,3 K], добавлен 23.03.2015Предназначение дисковых накопителей, схема устройства жесткого диска. Критерии эффективности физической организации файлов. Схема адресации кластеров файла, используемая в стандартной на сегодняшний день для UNIX файловой системе ufs. Функции флэш-памяти.
реферат [4,0 M], добавлен 09.12.2009Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.
курсовая работа [27,4 K], добавлен 07.08.2007Функции ввода с клавиатуры и вывода на экран, алгоритм вывода чисел. Генерация звуковых сигналов в ПЭВМ. Принципы работы видеосистемы: адресация и режимы работы адаптера CGA, режим работы дисплея. Таблица векторов прерываний в работе клавиатуры.
отчет по практике [700,4 K], добавлен 23.11.2010Назначение и свойства стандартных диалоговых окон для работы с файловой системой. Свойства, управляющие видом меню. Программирование чтения и записи файлов. Исключительные ситуации и диагностические сообщения. Приемы составления контекстного меню.
лекция [775,2 K], добавлен 09.12.2013Ознакомление с методами управления вводом/выводом в вычислительных системах. Принципы и этапы проектирования, а также реализация интеллектуальной системы с применением ввода-вывода управляемого прерываниями, с использованием языка программирования Си.
курсовая работа [71,8 K], добавлен 18.04.2015Классификация периферийных устройств ввода и вывода данных для обмена информацией между компьютером и внешним миром. Системы распознавания магнитных знаков, символов. Принцип работы мониторов и принтеров. Вид манипуляторов для управления курсором.
реферат [272,7 K], добавлен 01.04.2014Создание интерактивного интерпретатора для мелких вычислений стандартного "Калькулятора" Windows. Его реализация относительно несложного языка программирования, работающий в интерактивном режиме, то есть выполняющий вводимые команды с клавиатуры.
курсовая работа [287,3 K], добавлен 17.09.2008