回答:
この例には2つの問題があります。
主なものは、正規表現が「任意の文字列」を意味するワイルドカードであるglobパターンと同じように機能すると想定していることです*。正規表現で*は、代わりに「前のアトムの任意の数」をfil*意味します。したがってf、iその後に0個以上のl文字が続くことを意味します。grep fil.*意図した意味を得るために言う必要があります:.は「任意の1文字.*」を意味するため、「任意の文字シーケンス」を意味します。
より少ない問題は、引用符で囲まれていない特殊文字を使用していることです。これは、globルールの下で何かを意味します。これは、シェルがそれらを解釈できることを意味します。ローカルディレクトリにglobパターンfil*またはabc*と一致するファイルがある場合、シェルはそれらを展開し、grep展開されたファイル名を意図したREではなくパターンとして取得します。コマンドラインでそのような文字を使用しているときはいつでも、それらを引用する必要があります:echo file | grep 'fil.*'。
echo file|grep fil*答えますfil。