Перенаправление ввода и вывода
Именованные каналы
, также как и доменные гнезда обеспечивают взаимодействие двух несвязанных процессов, выполняемых на одной машине.
Жесткие ссылки
— это скорее не тип файла, а его дополнительное имя. У каждого файла имеется как
минимум одна ссылка. Как правило, это имя, под которым он был создан. Добавлением
ссылки создается псевдоним файла.
Ссылку невозможно отличить от имени файла, к которому она присоединена: в ОС UNIX они идентичны. UNIX подсчитывает количество ссылок, указывающих на каждый файл, и не освобождает блоки данных файла до тех пор, пока не удалит его последнюю ссылку.
Символические ссылки
— обеспечивают возможность указывать вместо путевого имени файла имя ссылки.
Символическая ссылка содержит путевое имя файла, на который она ссылается.
Имена файлов могут состоять из любых символов, за исключением слэша и символа с кодом ноль. Максимальная длина имени файла определяется конкретной системой. Для каждого файла определен владелец этого файла и группа владелец данного файла. Для каждого файла определяются права доступа владельца файла, группы, всех остальных. Есть три типа прав доступа: чтение, запись, выполнение/поиск. Изменить права доступа к файлу может только владелец и суперпользователь (root).
Если некоторый процесс намерен производить ввод или вывод информации в файл, то он должен сначала открыть этот файл. При открытии файла процесс получает дескриптор файла — некоторое число, которое используется, в дальнейшем для обращения к файлу. При запуске процесса ему передаются дескрипторы трех открытых файлов: 0 – стандартный ввод, 1 – стандартный вывод, 2 – стандартный вывод ошибок. Как правило все эти дескрипторы указывают на терминал – tty. Оболочка позволяет назначать другие файлы для ввода и вывода при помощи команд перенаправления:
команда < файл
При запуске команды дескриптор 0 будет связан с файлом, т.е. программа будет считывать данные не с клавиатуры, а из файла. Файл будет открыт для чтения.
команда > файл
При запуске команды дескриптор 1 будет связан с файлом, т.е. программа будет выводить результаты работы не на экран, а в заданный файл. Файл будет открыт для записи, если файл существовал, он будет очищен, если нет, то он будет создан.
команда >> файл
При запуске команды дескриптор 1 будет связан с указанным файлом, как и в предыдущем случае. Однако в данном случае, если файл существовал, то он не будет перезаписан, данные будут добавляться в конец файла.
команда n> файл
При запуске команды дескриптор с номером n будет связан с указанным файлом. Например, если указать 2>err.log, то вывод сообщений об ошибках будет производиться в файл err.log. Аналогично, можно указывать дескриптор перед операторами перенаправления > и >>.
команда n<> файл
При запуске команды дескриптор с номером n будет связан с указанным файлом. Файл будет открыт для чтения и записи.
При перенаправлении можно вместо имени файла указывать дескриптор, для этого следует поставить перед дескриптором знак &. Например: 2>&1 скопирует содержимое дескриптора 1 в дескриптор 2. Копируемый дескриптор должен быть открыт для чтения или записи в зависимости от операции.
Операции перенаправления выполняются слева направо. В случаях, когда используется копирование дескрипторов, порядок выполнения операций может влиять на результат.