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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 


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

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

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

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

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

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