如何使用grep搜索--help输出?

说唱

当使用grepegrep搜索带有--help参数的程序输出时,它将打印完整的输出,而不是匹配的行。

例子:

ssh-keygen --help | grep "known_hosts"
unknown option -- -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       // etc

搜索类似ssh-keygen --help | grep "-p"grep的参数时,它会自动识别此参数。转义破折号(即grep "\-p")并没有帮助。

例子:

ssh-keygen --help | grep "-p"         
grep: invalid option -- 'p'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
unknown option -- -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
       ssh-keygen -i [-m key_format] [-f input_keyfile]
       ssh-keygen -e [-m key_format] [-f input_keyfile]
       ssh-keygen -y [-f input_keyfile]
       ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
       ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
       ssh-keygen -B [-f input_keyfile]

怎么解决呢?谢谢你的帮助!

甜点

ssh-keygen命令没有--help选项,因此它会显示“未知选项”错误,默默地认为“ RTFM”并输出帮助。它不是在stdout上执行而是在stderr上执行此操作,stderr不是通过管道传递的,|而是仅通过|&(是的bash简写2>&1 |进行传递的

$ ssh-keygen --help |& grep "known_hosts"
       ssh-keygen -F hostname [-f known_hosts_file] [-l]
       ssh-keygen -H [-f known_hosts_file]
       ssh-keygen -R hostname [-f known_hosts_file]

一个完全不同的问题是grep将搜索表达式识别为选项,因为它以连字符开头。幸运的grep是,许多命令可以识别“--选项结束”选项,并将其后面的所有内容作为参数而不是选项:

$ ssh-keygen --help |& grep -- -p
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

man grep甚至没有提到它,但这是bash手册中此选项的描述

A--表示选项结束,并禁用进一步的选项处理。后面的所有参数--均视为文件名和参数。

grep还提供了第二种处理以“-”开头的模式的方式:该-e选项将模式作为其自变量,因此以下情况同样可能:

$ ssh-keygen --help |& grep -e -p
       ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

进一步阅读

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用grep搜索--help输出?

来自分类Dev

如何grep,然后在输出中进行搜索和替换?

来自分类Dev

使用“ grep搜索”的输出作为“ yum更新”的输入(Shell脚本)

来自分类Dev

如何将python`help`输出解析为类存根

来自分类Dev

Grep输出整个搜索文件

来自分类Dev

如何使用grep的输出进行ping

来自分类Dev

如何使用grep输出作为cd的路径?

来自分类Dev

如何使用grep的输出进行ping

来自分类Dev

如何查看使用grep过滤的输出?

来自分类Dev

如何在EOF中使用grep输出?

来自分类Dev

如何使用grep搜索模式?

来自分类Dev

如何grep netcat输出

来自分类Dev

如何缩进grep的输出?

来自分类Dev

如何grep netcat输出

来自分类Dev

如何grep cURL的输出?

来自分类Dev

如何从git grep输出?

来自分类Dev

如何让grep搜索具有特定字符串的ebuild,并生成仅包含ebuild位置的输出?

来自分类Dev

使用grep时如何获取查询顺序输出?

来自分类Dev

如何使用grep输出每一行的结果?

来自分类Dev

如何使用grep将输出分为两个文件?

来自分类Dev

如何使用grep输出找到的文本的主目录

来自分类Dev

如何使用grep从命令输出中打印特定变量?

来自分类Dev

如何使用shell脚本从输出中grep特定值?

来自分类Dev

如何在 Powershell HTML 输出中使用搜索选项

来自分类Dev

如何为grep输出着色

来自分类Dev

使用grep过滤进程的输出

来自分类Dev

如何使用grep搜索我的PDF?

来自分类Dev

如何使用grep搜索单词的出现与否

来自分类Dev

如何使用grep命令搜索多个模式?