При использовании конвейера (command1 | command2) по умолчанию перенаправляется только стандартный вывод (stdout), а стандартный поток ошибок (stderr) продолжает выводиться в терминал. Вот как можно перенаправить оба потока:
command1 2>&1 | command2
Объяснение:
2>&1 перенаправляет дескриптор 2 (stderr) в дескриптор 1 (stdout)command1 2> error.log | command2 > output.log
Объяснение:
stderr записывается в файл error.logstdout передается в command2, а его вывод сохраняется в output.logcommand1 > >(command2) 2>&1
Объяснение:
>(command2) создает временный файловый дескриптор для command22>&1 объединяет потоки{ command1 2>&1 1>&3 | command2; } 3>&1
Объяснение:
stdoutstderr перенаправляется в текущий stdout (который ведет в конвейер)stdout сохраняется через дескриптор 3command1 |& command2
Объяснение:
|& это сокращение для 2>&1 |2>&1 ||&Все методы работают в POSIX-совместимых оболочках, кроме специально отмеченных Bash-специфичных вариантов.