たとえば、シングルクォーテーションを使用したディレクトリ名を作成したい場合、以下のようにコマンドを入力することで、ディレクトリ名にシングルクォーテーションが使用できる。
$ mkdir test\'
つまり単純にシングルクォーテーションをバックスラッシュでエスケープしてやればよい。
削除したいときも同じ。
$ rm -fr test\'
ここまでは普通。
では、ディレクトリ名をシングルクオーテーションで囲みたいときはどうするのか?
通常、ターミナルでコマンド入力するときは、このようなシチュエーションはないが、PerlやPHPからsystem()などでコマンドを実行したい場合に、そうしたいときがある。
実はこの場合、バックスラッシュでエスケープしても意味が無い。
$ rm -fr 'test\'' # これではダメ
そこで、phpのescapeshellargがどうしているのかを確認した結果、いかのようにするのが正しいことがわかった。
$ rm -fr 'test'\'''
なんか腑に落ちない気もするが、実際にこれでうまくいったので。。。ちょっと不安。