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