Интернет магазин китайских планшетных компьютеров



Компьютеры - Перенаправление (UNIX) - Перенаправление в/из стандартных файловых дескрипторов

24 мая 2011


Оглавление:
1. Перенаправление (UNIX)
2. Перенаправление в/из стандартных файловых дескрипторов
3. Цепочка конвейеров



В командной оболочке UNIX, произошедшей из Bourne shell, предыдущие два действия можно усовершенствовать, указав номер непосредственно перед символом перенаправления. Этот номер указывает какой именно поток используется для перенаправления. В UNIX существуют следующие стандартные потоки ввода/вывода:

Дескриптор Название Описание
0 stdin Стандартный ввод
1 stdout Стандартный вывод
2 stderr Стандартный вывод ошибок

К примеру:

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

выполняет команду1 направляя стандартный поток ошибок в файл1

В командных оболочках произошедших от C Shell по правилам синтаксиса для указания потока, в который осуществляется перенаправление нужно добавлять символ & после символа перенаправления.

Часто стандартный поток ошибок объединяют со стандартным потоком вывода, чтобы можно было обрабатывать ошибки и обычные результаты работы программы вместе. К примеру:

find / -name .profile > результаты 2>&1

попытается найти все файлы с именем .profile. Если выполнять эту команду без перенаправлений она будет направлять результаты поиска в stdout, а сообщения об ошибках в stderr. По умолчанию эти роли выполняет консоль. Если стандартный поток вывода направлен в файл результаты, то ошибки по-прежнему будут направляться в консоль. Чтобы и ошибки и результаты поиска направлялись в файл результаты стандартные потоки ошибок и вывода были объединены используя 2>&1.

Написание 2>&1 перед > не будет работать, так как когда интерпретатор прочитает 2>&1, он ещё не знает куда перенаправлен стандартный поток вывода, поэтому потоки ошибок и вывода не будут объединены.

Если объединенный результат нужно направить на вход другой программы посредством конвейера, тогда последовательность 2>&1 должна стоять перед знаком конвейера. К примеру:

find / -name .profile 2>&1 | less

Упрощенная форма записи команды:

команда > файл 2>&1

выглядит так:

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

или

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


Просмотров: 2486


<<< Замедлитель процессора
Расширитель DOS >>>