为了解在不同情况下的实际使用grep的选项-H的(To understand the practic

2019-07-30 03:43发布

这个问题是基于这样的回答 。

为什么你从两个命令的输出一样吗?

命令A

$sudo grep muel *                                                             /tmp
masi:muel

命令B

$sudo grep -H muel *                                                          /tmp
masi:muel

罗布的意见建议我下的命令一个不应该给我masi: ,但只muel

总之, 什么是实际目的-H

Answer 1:

如果超过一个给出文件名grep的将默认列出的文件名。 该-H选项,可以做,即使只有一个文件名中给出。 在这两个你的例子,一个以上的文件名中给出。

这里有一个更好的例子:

$ grep Richie notes.txt
Richie wears glasses.

$ grep -H Richie notes.txt
notes.txt:Richie wears glasses.

当你给它一个通配符未知数量的文件,而你总是要打印的文件名,即使通配符匹配只有一个文件更为有用。



Answer 2:

如果你用grep一个文件,-H有差别:

$ grep muel mesi
muel

$ grep -H muel mesi
masi:muel

这可能是在不同的脚本环境显著。 例如,一个脚本(或一个不平凡的管道一系列命令)可能不知道它有多少个文件实际处理:一,还是很多的。



Answer 3:

当您从多个文件的grep,默认情况下它显示了找到匹配的文件名。 如果指定-H,文件名会一直显示,即使你从一个单一的文件的grep。 您可以指定-h从不显示文件名。



Answer 4:

Emacs有grep的接口(MX的grep,的Mx lgrep,的Mx rgrep)。 如果你问的Emacs在当前目录中搜索FOO,然后调用Emacs的grep和处理grep的输出,然后为你展示与点击链接的结果。 可点击的链接,就像谷歌。

什么Emacs也就是它通过两个选项给grep:(显示文件名,即使只有一个文件的一点是一致性)-N(显示行号)和-H然后打开输出为可点击的链接。

在一般情况下,一致性好,作为一个良好的API,但一致性DWIM冲突。

当您直接使用grep,你想DWIM,让你不及格-H。



文章来源: To understand the practical use of Grep's option -H in different situations
标签: grep option