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

Как записать в файл лога только ошибки?
Вероятно вы уже встречали не совсем очевидные знаки типа 2>&1
Давайте разберемся что это и как этим пользоваться.

Что бы понимать какие вообще есть потоки, приведу следующую таблицу:

0 stdin Стандартный ввод
1 stdout Стандартный вывод
2 stderr Стандартный вывод ошибок
В Powershell существует больше потоков

Для перенаправления потока
используется комбинация знаков «больше» и амперсанд: >&

Пример:

taskkill -im programm.exe 2>&1

Варианты перенаправления

Перенаправление в файл
Для перенаправления в файл не нужно указывать знак & — он используется только при перенаправлении одного потока в другой

 

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

Таким образом мы перенаправляем более узкий набор данных(поток ошибок) в более общий(стандартный поток вывода), что бы направить в файл всю имеющуюся информацию, которую в последствии можно использовать для отладки.

Перенаправление потока в другой поток
команда 2>&1

Использование конструкции 1>&2  не предусмотрено, так как не имеет смысла.

Перенаправление с добавлением

Одинарный знак «>» заменяется на двойной и позволяет записывать вывод потока в конец файла

команда 2>> файл
Перенаправление в Null

С помощью перенаправления потока в Null можно убрать из вывода содержимое этого потока.

команда 2>null
Это очень полезно в Powershell, при использовании утилиты psexec, так как даже при успешном выполнении команды возвращается код ошибки 0. Используйте 2>null  если нужно подавить эти строки

Добавить комментарий

Ваш адрес email не будет опубликован.