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