5

この質問はこの回答に基づいています。

両方のコマンドから同じ出力が得られるのはなぜですか?

コマンドA

$sudo grep muel *                                                             /tmp
masi:muel

コマンドB

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

ロブのコメントは、コマンドAが私に与えるべきではなくmasi:、ただmuel

要するに、の実用的な目的は-H何ですか?

4

4 に答える 4

13

複数のファイル名が指定されている場合、Grepはデフォルトでファイル名を一覧表示します。この-Hオプションを使用すると、ファイル名が1つだけ指定されている場合でもそれが可能になります。どちらの例でも、複数のファイル名が指定されています。

より良い例を次に示します。

$ grep Richie notes.txt
Richie wears glasses.

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

不明な数のファイルにワイルドカードを指定し、ワイルドカードが1つのファイルにのみ一致する場合でも、ファイル名を常に出力する場合に便利です。

于 2009-07-13T21:37:41.933 に答える
5

単一のファイルをgrepする場合、-Hは違いを生みます。

$ grep muel mesi
muel

$ grep -H muel mesi
masi:muel

これは、さまざまなスクリプトコンテキストで重要になる可能性があります。たとえば、スクリプト(または重要なパイプの一連のコマンド)は、実際に処理しているファイルの数(1つまたは多数)を認識していない場合があります。

于 2009-07-13T21:38:31.493 に答える
1

複数のファイルからgrepを実行すると、デフォルトでは、一致が見つかったファイルの名前が表示されます。-Hを指定すると、単一のファイルからgrepを実行した場合でも、ファイル名が常に表示されます。-hを指定して、ファイル名を表示しないようにすることができます。

于 2009-07-13T21:39:03.663 に答える
1

Emacsにはgrepインターフェース(Mx grep、Mx lgrep、Mx rgrep)があります。Emacsに現在のディレクトリでfooを検索するように依頼すると、Emacsはgrepを呼び出してgrep出力を処理し、クリック可能なリンクで結果を表示します。Googleと同じように、クリック可能なリンク。

Emacsが行うことは、2つのオプションをgrepに渡すことです。-n(行番号を表示)と-H(ファイルが1つしかない場合でもファイル名を表示します。要点は一貫性です)、出力をクリック可能なリンクに変換します。

一般に、一貫性は優れたAPIであるために適していますが、一貫性はDWIMと競合します。

grepを直接使用する場合は、DWIMが必要なので、-Hを渡さないでください。

于 2009-12-14T17:41:40.007 に答える