Перенаправление ввода и вывода



Лабораторная работа №1

Изучение основных команд для работы с файлами.

Общие сведения

UNIX — многопользовательская, многозадачная операционная система с разделением време­ни. В любой момент в системе выполняется множество процессов, каждый процесс принадлежит некоторому пользователю. Пользователь это объект обладающий определенными правами в си­стеме. Каждый пользователь идентифицируется уникальным идентификатором пользователя (UID — user identifier). Пользователю присваиваются имя и пароль. Пользователь с UID 0 (root) обладает неограниченными правами. Кроме того каждый пользователь входит в одну или несколько групп. Принадлежность к группе добавляет пользователю определенные права в си­стеме. Каждая группа идентифицируется уникальным идентификатором группы (GID — group identifier). Информация о пользователях хранится в файле /etc/passwd. Каждая строка файла содержит информацию об одном пользователе: регистрационное имя, зашифрованный пароль1 , UID, GID, полное имя, домашний каталог, командную оболочку. Командная оболочка (команд­ный интерпретатор, shell) — средство интерактивного взаимодействия с системой. Домашний каталог — каталог в котором хранятся файлы пользователя. При входе пользователя в систему этот каталог становится текущим для оболочки.

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

Файловая система — это структура, с помощью которой ядро операционной системы ор­ганизует и представляет пользователям ресурсы памяти системы. Сюда относится память на различного рода носителях информации. Емкость и количество носителей различно в разных системах. Ядро объединяет эти ресурсы в единую иерархическую структуру, которая начинается в каталоге / и разветвляется, охватывая произвольное число подкаталогов.

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

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

В ОС UNIX существует восемь типов файлов:

Обычный файл

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

Каталоги

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

Файлы устройств

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

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

 

1В настоящее время это поле не используется, пароль хранится в другом месте


Каждому типу устройств системы может соответствовать несколько файлов устройств. Поэтому файлы устройств характеризуются двумя номерами: старшим и млад­шим.Старший определяет драйвер, а младший конкретное устройство.

Доменные гнезда (sokets) UNIX

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

Именованные каналы

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

Жесткие ссылки

— это скорее не тип файла, а его дополнительное имя. У каждого файла имеется как
минимум одна ссылка. Как правило, это имя, под которым он был создан. Добавлением
ссылки создается псевдоним файла.

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

Символические ссылки

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

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

Перенаправление ввода и вывода

Если некоторый процесс намерен производить ввод или вывод информации в файл, то он должен сначала открыть этот файл. При открытии файла процесс получает дескриптор файла — некоторое число, которое используется, в дальнейшем для обращения к файлу. При запуске процесса ему передаются дескрипторы трех открытых файлов: 0 – стандартный ввод, 1 – стан­дартный вывод, 2 – стандартный вывод ошибок. Как правило все эти дескрипторы указывают на терминал – tty. Оболочка позволяет назначать другие файлы для ввода и вывода при помощи команд перенаправления:

команда < файл

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

команда > файл

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

команда >> файл

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

 


команда n> файл

При запуске команды дескриптор с номером n будет связан с указанным файлом. На­пример, если указать 2>err.log, то вывод сообщений об ошибках будет производиться в файл err.log. Аналогично, можно указывать дескриптор перед операторами перена­правления > и >>.

команда n<> файл

При запуске команды дескриптор с номером n будет связан с указанным файлом. Файл будет открыт для чтения и записи.

При перенаправлении можно вместо имени файла указывать дескриптор, для этого следует поставить перед дескриптором знак &. Например: 2>&1 скопирует содержимое дескриптора 1 в дескриптор 2. Копируемый дескриптор должен быть открыт для чтения или записи в зависимости от операции.

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


Дата добавления: 2018-04-05; просмотров: 268; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!