#author("2022-02-15T03:37:05+09:00","default:ryuichi","ryuichi")
#author("2022-02-15T03:37:46+09:00","default:ryuichi","ryuichi")
* クォーテーションの中でクォーテーションを使う [#g6cab703]
** やりたいこと [#oacad000]
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に設定したい
- この場合は"(ダブルクォーテーション)でくくればよいが、'(シングルクォーテーション)でくくることを考える
** 方法 [#t00ffb8f]
*** 1: '(シングルクォーテーション)をいったん終わらせて"(ダブルクォーテーション)で'を表現する [#r724674b]
*** (1) '(シングルクォーテーション)をいったん終わらせて"(ダブルクォーテーション)で'を表現する [#r724674b]
alias v='vim '"'"'file 1.txt'"'"' '"'"'file 2.txt'"'"''
- ''' v='vim ''' の後の ''' 'file 1.txt ''' を ''' '"'"'file 1.txt '''にする
- 考え方としては最初の'でいったんシングルクォーテーションを終わらせて"で引用を開始し、'を入れたら、すぐに"で引用を終わらせて、さらにすぐに'で引用を開始してfile 1.txtを入れる、というもの
*** 2: '(シングルクォーテーション)をいったん終わらせて'をエスケープした'で表現する [#qf4103a8]
*** (2) '(シングルクォーテーション)をいったん終わらせて'をエスケープした'で表現する [#qf4103a8]
alias v='vim '\''file 1.txt'\'' '\''file 2.txt'\'''
- すなわち ''' ' ''' を ''' '\'' ''' で置き換える
- 考え方は1と同じで、いったんシングルクォーテーションを終わらせて、エスケープした'(\')でシングルクォーテーションを表現し、すぐに'で引用を開始する
- 考え方は(1)と同じで、いったんシングルクォーテーションを終わらせて、エスケープした'(\')でシングルクォーテーションを表現し、すぐに'で引用を開始する
*** Bashの$'...'を使う [#hc859181]
*** (3) Bashの$'...'を使う [#hc859181]
alias v=$'vim \'file 1.txt\' \'file 2.txt\''
- '(シングルクォーテーション)くくる代わりに、''' $'...' ''' でくくる
- ''' $'...' ''' の中の箇所の ''' ' ''' は単純に ''' \' ''' でエスケープするだけなので、この方法が一番簡単