перенаправление stdout и stderr

Запись создана декабря 21, 2009

Коротко и ясно расскажу о пере направлении stdout и stderr. stdout это нормальный вывод, stderr это ошибки.

[root@shakirov ~]# ls /opt/ /blah
ls: /blah: Нет такого файла или каталога
/opt/:
firebird  iso  lost+found

красным выделен stderr, а синим stdout. По умолчанию в output отправляется и stdout и stderr.


перенаправления stdout в /tmp/stdout используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah > /tmp/stdout
ls: /blah: Нет такого файла или каталога

для перенаправления stderr в /tmp/stderr используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah 2> /tmp/stdout
/opt/:
firebird  iso  lost+found

Для перенаправления sterr и stdout в файл /tmp/all используйте конструкцию:

[root@shakirov ~]# ls /opt/ /blah > /tmp/all 2>&1

Есть вариант когда stderr и stdout отправляются в output и в файл. Это удобно для отладки интерактивных скриптов. Делается это через tee.

[root@shakirov ~]# ls /opt/ /blah 2>&1 | tee /tmp/all
ls: /blah: Нет такого файла или каталога
/opt/:
firebird  iso  lost+found

ну и пара практических вариантов, отправка stdout и stderr на электронную почту:

[root@shakirov ~]# ls /opt/ /blah 2>&1 | mail root@localhost

скрытие сообщений об ошибках:

[root@shakirov ~]# ls /opt/ /blah 2> /dev/null

» Запись из раздела Несортированное | 2 комментария

Комментарии



2 комментария to “перенаправление stdout и stderr”

  1. Andrey on августа 5, 2010 14:53

    в команде перенаправления stderr в файл двойка перед > пропущена

  2. Артур Шакиров on августа 9, 2010 13:47

    да, точно. спасибо поправил.




Ответить