Lから始まるLinux

2章29話
ブレース展開
2章30話 クォート
もくじ
2章31話
リダイレクト
クォート
若木 みどり
お兄ちゃん! Program Files ディレクトリを 消せないんだ!
rmdir Program Files
若木 みどり
実行するとProgram というディレクトリは存在しない」Files というディレクトリは存在しない」って2回怒られちゃうよ!
若木 しげる
今回は文字の特殊な意味を打ち消す「クォート(quote)」を学ぼう!名詞で「クォーテーション(quotation)」とも呼ぶよ
若木 みどり
これで名前にスペースが含まれるファイルも扱えるんだね?
バックスラッシュ \
若木 しげる
最初は「バックスラッシュ(\)」だよWindows では の半角記号になるよこれは直後1文字の特殊な意味を打ち消してくれるんだ
若木 しげる
スペースは「コマンドの要素の区切り」という特殊な意味を持っているんだ
若木 しげる
スペースの前にバックスラッシュを追加してみようそうするとスペースはその特殊な意味を失って「これはただの文字です」という扱いになるんだ
rmdir Program\ Files
若木 みどり(驚き)
おっ!ちゃんと Program Files ディレクトリを消せたよ!
若木 みどり
スペースを含むファイル名は扱いが難しくなるんだね
若木 しげる
そうだねなるべく避けた方がいいけどスペースを含むファイル名は少なからずあるものなんだ
若木 しげる(笑顔)
こういう時はクォートして区切りの意味を失わせてあげよう
ダブルクォート "
若木 みどり
自分のファイルを調べていたらスペースを何個も含むファイル名があったよ!
若木 みどり
これって全てのスペースの前にバックスラッシュを指定しないといけないんだよね?ちょっと面倒かも…
若木 しげる
それなら「ダブルクォート(")」ファイル名を囲んであげようその間にあるスペースは全て普通の文字として扱われるよ
若木 みどり(驚き)
5, 6, 7, 8.mp3というファイルなんだけど5_6_7_8.mp3に変更したいんだどうすればいいかな?
若木 しげる
名前を変えるのは mv だったよねコマンドは mv を使うことにしよう!
若木 しげる
そして mv の引数にスペースが含まれていればそれをダブルクォートで囲ってあげるんだ
mv "5, 6, 7, 8.mp3" 5_6_7_8.mp3
若木 みどり(笑顔)
お兄ちゃん!ちゃんと名前変更ができたよ!
若木 しげる
ダブルクォートは「ゆるい」クォートなんだスペースやワイルドカードなどの意味を失わせるけど他の大部分の特別な意味後で紹介する変数やコマンド展開などの意味は失わせないんだ
若木 しげる
なのでスペースなどを普通の文字として扱いつつ便利な機能は使いたいそんな欲張りなクォートがダブルクォートだよ
シングルクォート '
若木 みどり
ダブルクォートは「ゆるい」クォートと言っていたよねじゃあ「きつい」クォートもあるんだ?
若木 しげる
もちろんあるよ!それが「シングルクォート(')」なんだ
若木 しげる
使い方はダブルクォートと一緒だけどシングルクォートとバックスラッシュ以外の全ての文字の意味を失わせるよ
若木 みどり
シングルクォートで囲めば大抵は「囲んだ文字列そのもの」の意味になるんだ!特殊な記号を多く扱っている場合でもそのままの文字列で扱って欲しい時に便利そうだね
若木 しげる
後で紹介する「正規表現」そのような記号をたくさん使うんだ正規表現はシングルクォートで囲むことが多いよ
空文字
若木 しげる
ダブルクォートやシングルクォートを使えば0文字である「空文字」を表現できるんだ
若木 みどり
空文字を扱えるとどんなことができるのかな?
若木 しげる
引数が必ず必要なコマンドがあったとしようこれまでの考えでこのコマンドに空文字を渡そうとするとこう書くよね
コマンド 
若木 みどり
これは引数が無いのと全く同じ書き方になっちゃうね
若木 しげる
このような場合以下のようにしてあげると空文字を引数に指定できるんだ
コマンド ""
まとめ
若木 みどり
今回は「クォート」を学んだよ!特殊な意味になってしまう文字を普通の文字として扱えるようにするんだね!
若木 しげる
特にシングルクォートやダブルクォートで「ひとまとまり」とすることはこれからも良く登場するよ必要な場合に使えるようこれらのクォートに慣れておこう!