"ls -a | grep^\."の奇妙な動作

パスワードの内容をリストし、ドットで始まるファイルのみを表示したいと思います。試してみましたが、ls -a | grep ^\.なぜ出力にドットで始まらないファイルも含まれているのはわかりません。たとえば、

Pictures
.pip
.pki
.profile
projects
Public

私は私が望むことを達成できることを知っていますが、ls -ld .*説明できないgrepの動作が気になるだけです。

ベストアンサー1

パラメータを引用符grepで囲むls -a | grep '^\.'

その理由は、シェルが\.それを処理して再び一般に変換してから、単一.文字grepのワイルドカードとして処理するためです。疑わしい場合は、必ずシェル固有の文字を含む(または含めることができる)文字列を引用してください。

おすすめ記事