Интернет магазин китайских планшетных компьютеров |
||
Компьютеры - Перенаправление (UNIX) - Перенаправление в/из стандартных файловых дескрипторов24 мая 2011Оглавление: 1. Перенаправление (UNIX) 2. Перенаправление в/из стандартных файловых дескрипторов 3. Цепочка конвейеров В командной оболочке UNIX, произошедшей из Bourne shell, предыдущие два действия можно усовершенствовать, указав номер непосредственно перед символом перенаправления. Этот номер указывает какой именно поток используется для перенаправления. В UNIX существуют следующие стандартные потоки ввода/вывода:
К примеру: команда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 выглядит так: команда &> файл или команда >& файл Просмотров: 2588
|