「$」で始まるフォルダを削除するにはどうすればいいですか?

「$」で始まるフォルダを削除するにはどうすればいいですか?

「$pattern」という名前のディレクトリを作成しましたが、それを削除しようとすると、

パターン: 未定義の変数。

私が試してみました:

$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"

答え1

$、スペース、'およびは[、ほとんどのシェルで特殊文字です。これらの文字の特別な意味を削除するには、シェルの引用メカニズムを使用する必要があります。

引用構文はシェルによって大きく異なる

私が知っているすべてのシェルでは、一重引用符を使用して、一重引用符、バックスラッシュ、および改行を除くすべての文字を引用できます (Bourne のようなシェルでは、\一部のバックティックを除き、最後の 2 つも引用符で囲みます)。

rm -r '$pattern'

ほとんどの一般的なシェルで動作するはずです。

rm -r \$pattern

ファミリーのシェルを除くすべてのシェルで動作します (Bourne のようなシェルのバックティック内を除く) rc

以下も同様です:

rm "\$option[value='2016']"

- のようなシェルではrc、次のように使用します。

rm '$option[value=''2016'']'

答え2

ディレクトリが空の場合:

rmdir \$pattern

さもないと:

rm -r \$pattern

(フォルダに含まれるすべてのファイルを再帰的に削除します)

答え3

特殊文字を含むファイルを操作する必要がある場合、bash のオートコンプリート機能を使用するというオプションがあります。コマンド (この場合はrmdir) の入力を開始し、Tab数回入力します。これにより、現在のディレクトリ内のすべてのファイル/ディレクトリが循環され、すべての特殊文字が自動的にエスケープされます。

これは、非常に長いファイル名を操作する場合にも有効です。

答え4

単に「\」を使用して文字をエスケープします。これは、Web アプリケーションで SQL クエリを記述する際に、意図した以外のデータベース コマンドの実行を防ぐために使用される一般的な方法でもあります。

関連情報