grepがフリーズする

grepがフリーズする

grep の使用に問題があります。Win 10 に ubuntu 18.04 をインストールしています。最も単純なコマンドでもフリーズしてしまいます。キャンセルして新しいファイルを作成することはできますが、何も書き込まれません。

$ mkdir test
$ cd test
$ ls
$ sudo grep "Werk!" > new
^C
$ ls
new
$ cat new

何か明らかなことを見逃しているのでしょうか?

答え1

はい。STDIN を grep しているので、決して来ない入力を待って永遠にハングします。

おそらく、現在のディレクトリを grep するために、grep の引数として「.」と -r (再帰) を含めることを意図していたのでしょう。

grep -r hello .

デフォルトの動作が理想的ではないと感じる人もいるので、代替案によってはこの問題がないことgrepがわかるでしょう。たとえば、grepシルバーサーチャーは名前に従って実行されag、デフォルトでは現在のディレクトリを再帰的に検索するため、正しい構文についての推測は次のようになりますag

ag hello

agまた、大文字を含めない限り、大文字と小文字を区別しない検索がデフォルトになりますが、これはおそらくあなたが望んでいることです。また、デフォルトで色を使用し、デフォルトの弱い古い glob スタイルのマッチングではなく、より強力な PCRE 正規表現エンジン (Perl など) を使用するように設定されてgrepいます。

このようなユーザビリティの問題があるため、必要な場合にgrepのみ新しい代替手段を使用する必要があります。共有できるシェル スクリプトの標準ツールや、ログインするすべての Linux ボックスの標準ユーティリティとして知っておくことは、依然として役に立ちます。grepgrep

「ripgrep」と「ack」は grep の代替として適しています。

答え2

grepパターンを検索するファイルを指定するコマンドの 2 番目の引数がありません。

従ってください男 1 grepについてサポートを受けるにはgrep

答え3

おそらく、ファイル「new」にテキストを記録したい場合、「echo texts > new」を使用して実行できます。

関連情報