クォーテーションの中でクォーテーションを使う
やりたいこと
vim 'file 1.txt' 'file 2.txt' # (1)
alias v='vim 'file 1.txt' 'file 2.txt'' # (2)
- (1)で file 1.txt と file 2.txt という二つのファイルを開いてvimで起動する
- これを、(2)のようにaliasに設定したい
- この場合は"(ダブルクォーテーション)でくくればよいが、'(シングルクォーテーション)でくくることを考える
方法
(1) '(シングルクォーテーション)をいったん終わらせて"(ダブルクォーテーション)で'を表現する
alias v='vim '"'"'file 1.txt'"'"' '"'"'file 2.txt'"'"''
- v='vim の後の 'file 1.txt を '"'"'file 1.txt にする
- 考え方としては最初の'でいったんシングルクォーテーションを終わらせて"で引用を開始し、'を入れたら、すぐに"で引用を終わらせて、さらにすぐに'で引用を開始してfile 1.txtを入れる、というもの
(2) '(シングルクォーテーション)をいったん終わらせて'をエスケープした'で表現する
alias v='vim '\''file 1.txt'\'' '\''file 2.txt'\'''
- すなわち ' を '\'' で置き換える
- 考え方は(1)と同じで、いったんシングルクォーテーションを終わらせて、エスケープした'(\')でシングルクォーテーションを表現し、すぐに'で引用を開始する
(3) Bashの$'...'を使う
alias v=$'vim \'file 1.txt\' \'file 2.txt\''
- '(シングルクォーテーション)くくる代わりに、 $'...' でくくる
- $'...' の中の箇所の ' は単純に \' でエスケープするだけなので、この方法が一番簡単