Оператор
| в Linux передаёт только стандартный вывод (stdout) одной команды в другую. Ошибки (stderr) при этом теряются. Пример:
$ cat data.conf | grep "No such file"
Если файла нет —
grep ничего не поймает, потому что ошибка не передаётся дальше. Решение — использовать
|&:
$ cat data.conf |& grep "No such file"
Теперь в конвейер попадут и stdout, и stderr.
Фактически
|& — это сокращение для:
$ cmd-1 2>&1 | cmd-2
#linux
🐧 Linux Club ©
