В Linux оператор pipe
(|) очень полезен, если вы хотите перенаправить вывод одной команды в качестве ввода для следующей команды для дальнейшей обработки:$ cat data.conf | grep "No such file"
Однако это не перенаправляет ошибки. Поэтому, если файл не существует, команда
grep выше не вернет совпадение.А что, если вы хотите перенаправить и обработать как ошибки, так и обычный вывод?
Здесь на помощь приходит оператор перенаправления
|&Этот оператор отправляет как стандартный вывод (stdout), так и стандартную ошибку (stderr) первой команды через конвеер во стандартный ввод (stdin) второй команды. Посмотрите на этот пример:
$ cat data.conf |& grep "No such file"
Обратите внимание на разницу — команда
grep смогла найти совпадениеОператор
|& в bash — это сокращение от оператора перенаправления 2>&1 |$ cmd-1 2>&1 | cmd-2
✈️ Linux Ninja
