Skip to content

Перенаправления и конвейеры bash

Насчет перенаправлений stdin, stdout, stderr: их, к слову, можно использовать в одну строку:

Bash
homework < data.in > results.out 2> err.msgs

В stdin команды homework попадает файл data.in
stdout - в results.out
stderr - в err.msgs

Чтобы объединить stderr с stdout - нужно:

Bash
homework < data.in > results.out 2>&1
# stderr(2) в stdout(&1)

Про амперсанд (&)

Если в примере выше не будет амперсанда (&) - stderr запишется в файл с названием 1

+ пример выше приведен просто для понимания в дальнейшем такого кода. Но есть более распространенная и удобная версия объединения stdout и stderr:

Bash
homework < data.in &> results.out


Соус: Книга "Bash и кибербезопасность" --> Глава 1. Работа с командной строкой --> Основы работы с командной строкой --> Перенаправление и конвейер

bash