ディアルガ「なんでそんなわざわざ変な名前つけたんだ?」
ルギア君「Windows のファイルシステムだったから・・・」
ディアルガ「・・・」
ルギア君「じゃあ、bash での指定方法いくね。」
ここでは例として "OhMyGod!.wmv" を ffplay で再生してみよう。
$ ffplay "OhMyGod!.wmv"
は
bash: !.wmv": event not found
と叱られます。
そう、! は、過去のコマンドを参照する命令で "" の中にあっても作用してしまう、ちょっと厄介者です。
$ ls $ !l
を実行すると、2回目は ls が実行されます。
! のあとに付いている l は「l で始まる」という意味です。
$ !!
は最後に実行したコマンドを実行します。
$ ! 1
を実行すると・・・
bash: 1: command not found
(1 というコマンドがあれば別ですが)と、出ますね!
っていうと ! は無視しましたね。ということでこの技法が使えるのです。
でも、
$ ffplay "OhMyGod! .wmv"
とすると、ffplay は "OhMyGod! .wmv" は見付かりません。
というふうに怒ってしまいます。
ですから、スペースは詰めなければいけないのです。
そこで、printf コマンドが使えるのです。
$ ffplay `printf %s%s OhMyGod! .wmv`
ということです。
やっかいですね(ぁ
やっぱり、! は使わないようにしたほうがいいですね(ぁ
【追記】
! は \ でエスケープすれば回避できます.
つまり,
$ ffplay OhMyGod\!.wmv
で OK です.