#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\''

- '(シングルクォーテーション)くくる代わりに、''' $'...' ''' でくくる
- ''' $'...' ''' の中の箇所の ''' ' ''' は単純に ''' \' ''' でエスケープするだけなので、この方法が一番簡単

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS