私がこのようなことをするとき:
grep "hello" /home/paul/*
効果がある
しかし、私がこのようなことをするとき:
grep "hello" "/home/paul/*"
grep
表示エラー:
grep: /home/paul/*: そのファイルやディレクトリはありません。
なぜそんなことですか?
答え1
Bashリファレンスマニュアルから:
文字を二重引用符( ''')で囲むと、履歴拡張が有効になっている場合は、 '$'、 '''、 '\'、および '!'以外の引用符内のすべての文字のリテラル値が保持されます。
*
したがって、ワイルドカードとして扱われるように引用された文字列から特殊文字を削除する必要があります。
grep "hello" "/home/paul/"*