STDERR

10.3.2 STDERR

STDERR можно перенаправить аналогично STDOUT. При использовании символа стрелки для перенаправления предполагается поток №1 (STDOUT), если не указан другой поток. Таким образом, поток № 2 должен быть указан при перенаправлении STDERR путем размещения числа 2перед символом стрелки >.

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

sysadmin@localhost:~$ ls /fake
ls: cannot access /fake: No such file or directory

Обратите внимание, что в приведенном выше примере нет ничего, что подразумевало бы вывод STDERR. Вывод явно представляет собой сообщение об ошибке, но как определить, что оно отправляется в STDERR? Один простой способ определить это — перенаправить STDOUT:

sysadmin@localhost:~$ ls /fake > output.txt
ls: cannot access /fake: No such file or directory

В приведенном выше примере STDOUT был перенаправлен на output.txtфайл. Таким образом, отображаемый вывод не может быть STDOUT, потому что он был бы помещен в файл, output.txtа не в терминал. Поскольку все выходные данные команды направляются либо в STDOUT, либо в STDERR, вывод, отображаемый выше, должен быть STDERR.

Вывод STDERR команды можно отправить в файл:

sysadmin@localhost:~$ ls /fake 2> error.txt

В примере 2>указывает, что все сообщения об ошибках должны отправляться в файл error.txt, что можно подтвердить с помощью catкоманды:

sysadmin@localhost:~$ cat error.txt
ls: cannot access /fake: No such file or directory

Last updated