パスワードの内容をリストし、ドットで始まるファイルのみを表示したいと思います。試してみましたが、ls -a | grep ^\.
なぜ出力にドットで始まらないファイルも含まれているのはわかりません。たとえば、
Pictures
.pip
.pki
.profile
projects
Public
私は私が望むことを達成できることを知っていますが、ls -ld .*
説明できないgrepの動作が気になるだけです。
答え1
パラメータを引用符grep
で囲むls -a | grep '^\.'
その理由は、シェルが\.
それを処理して再び一般に変換してから、単一.
文字grep
のワイルドカードとして処理するためです。疑わしい場合は、必ずシェル固有の文字を含む(または含めることができる)文字列を引用してください。
答え2
答え3
cmdを実行するとls -a | grep ^\。これにより、grepは「\」を特殊文字として扱わず、「.」の意味はエスケープされません。
cmdを使用するときls -a | grep "^\."その後、grepは「\」を特殊文字として扱い、「.」の意味をエスケープします。それはあなたに期待される結果を与えるでしょう。
引用符なしでgrep cmdを使用するには、「\」文字もエスケープする必要があります。次のコマンドを使用すると、二重引用符なしで期待される結果を得ることができます。 ls -a | grep ^\\。
正規表現における特殊文字の意味の詳細については、次のリンクを参照してください。 http://www.regular-expressions.info/quickstart.html