シェルコマンドでシングルクォートに囲まれたシングルクォートのエスケープ


たとえば、シングルクォーテーションを使用したディレクトリ名を作成したい場合、以下のようにコマンドを入力することで、ディレクトリ名にシングルクォーテーションが使用できる。

$ mkdir test\'

つまり単純にシングルクォーテーションをバックスラッシュでエスケープしてやればよい。

削除したいときも同じ。

$ rm -fr test\'

ここまでは普通。

では、ディレクトリ名をシングルクオーテーションで囲みたいときはどうするのか?
通常、ターミナルでコマンド入力するときは、このようなシチュエーションはないが、PerlやPHPからsystem()などでコマンドを実行したい場合に、そうしたいときがある。

すくなくとも、このときはそう思った。(恥)

実はこの場合、バックスラッシュでエスケープしても意味が無い。

$ rm -fr 'test\''  # これではダメ

そこで、phpのescapeshellargがどうしているのかを確認した結果、いかのようにするのが正しいことがわかった。

$ rm -fr 'test'\'''

なんか腑に落ちない気もするが、実際にこれでうまくいったので。。。ちょっと不安。


関連する記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>