一重引用符エスケープ[閉じる]

一重引用符エスケープ[閉じる]

ドライブを消去してWindowsを再インストールする必要があり、そのためにはcygwinも再インストールする必要がありました。

私の新しいインストールでは、

ls -l "*\'*"

返品

ls: cannot access '*\'\''*': No such file or directory

これまで、長年にわたり、ls -l *\'*ユーザーがファイルまたはディレクトリ名に一重引用符を含めたディレクトリとファイルのリストが提供されました。

この場合、私が見逃す可能性のあるものについての提案はありますか?

たとえば、coreutilsは名前にスペースが含まれているファイルが「このファイルにスペースが含まれています」と表示されるようにいくつかの変更を加え、スイッチ/変数を使用してオフにする必要がありました。

一重引用符に関しては、標準の使用法と同様の変更があるかどうか疑問に思います。

答え1

*ワイルドカードとして使用するには引用できません。一重引用符と二重引用符の両方がエスケープされます。

二重引用符は一重引用符もエスケープされているため、文字列全体は文字通り*\'*解釈されます。

$ echo "*\'*"
*\'*

後で質問で書いたように、二重引用符なしで文字列を作成しようとしています。

ls -l *\'*

あなたにもっと合うもう一つの方法はコマンドを使うことですfind。 (上記と同じ引用規則に従わないため、混乱させて申し訳ありません。)findを使用すると、次のようにディレクトリ構造内の単一引用符を含むすべてのファイルを繰り返し検索できます。

find . -name "*'*"

この例では、.現在存在するディレクトリを示していますが、検索したいディレクトリのパスに置き換えることができます。

関連情報