grep on --help не работает с некоторыми командами

Я просто удивился, почему вы не можете использовать некоторые команды --help.

Например, если я использую ifconfig --help | grep unix, он все равно печатает всю справку вместо строки с unix.

Но на grep --help | grep null он работает нормально.

3
задан 28 November 2013 в 12:45

1 ответ

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 печатаются на ваш терминал, вы не видите разницы, но для конвейера важен фактический поток.

0
ответ дан 28 November 2013 в 12:45

Другие вопросы по тегам:

Похожие вопросы: