Я просто удивился, почему вы не можете использовать некоторые команды --help.
Например, если я использую ifconfig --help | grep unix
, он все равно печатает всю справку вместо строки с unix.
Но на grep --help | grep null
он работает нормально.
ifconfig
, кажется, печатает свою помощь stderr вместо stdout . Поскольку трубопровод передает только стандартный вывод в следующую программу, grep
не получает вывод.
Простой способ обойти это - перенаправить stderr на стандартный вывод. Вот пример того, как это сделать с помощью ifconfig
.
ifconfig --help 2>&1 | grep unix
производит требуемый вывод
unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
Обновление : 2>&1
- это то, что фактически перенаправляет (>
) stderr (2
) к тому же выходу (&
), что и стандартный вывод (1
). Поскольку обычно и stdout, и stderr печатаются на ваш терминал, вы не видите разницы, но для конвейера важен фактический поток.