Трубопроводы
Конвейер - это последовательность из одной или нескольких команд, разделенных одним из операторов управления | или | &. Формат для конвейера:
[time [-p]] [ ! ] command [ | or |& command2 ... ]
Стандартный вывод команды подключен через канал к стандартному вводу команды2. Это соединение выполняется перед любыми перенаправлениями, указанными в команде (см. ПЕРЕКЛЮЧЕНИЕ ниже). Если используется | &, стандартная ошибка команды связана со стандартным вводом command2 через канал; это сокращение для 2> & 1 |. Это неявное перенаправление стандартной ошибки выполняется после любых перенаправлений, указанных в команде.
Состояние возврата конвейера - это состояние выхода последней команды, если не включена опция pipefail. Если pipefail включен, статус возврата конвейера - это значение последней (самой правой) команды для выхода с ненулевым статусом или ноль, если все команды завершаются успешно. Если зарезервированное слово! перед конвейером, состояние выхода этого конвейера является логическим отрицанием состояния выхода, как описано выше. Оболочка ожидает завершения всех команд в конвейере, прежде чем вернуть значение.
Если зарезервированное временем слово предшествует конвейеру, истекшее время, а также пользовательское и системное время, затраченное на его выполнение, сообщаются, когда конвейер завершается. Опция -p изменяет формат вывода на тот, который указан в POSIX. Переменная TIMEFORMAT может быть установлена в строку формата, которая определяет, как должна отображаться информация о синхронизации; см. описание TIMEFORMAT в разделе «Переменные оболочки» ниже.
Каждая команда в конвейере выполняется как отдельный процесс (т. Е. В подоболочке).
type time
чтобы увидеть, что это такое.