「$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 クエリを記述する際に、意図した以外のデータベース コマンドの実行を防ぐために使用される一般的な方法でもあります。