行き先が無かったら、どうなると思う?

mv *.txt backup と打てば、.txt のファイルがまとめて backup の中へ入る。backup というディレクトリがあれば、の話だ。
では、もし backup というディレクトリが無かったらどうなるか。
mv の規則は単純で、最後に書いたものが行き先。だから対象が2つ以上あるときは「行き先がディレクトリではない」と言ってエラーで止まってくれる。ところが、パターンに合うファイルが1つだけだったときは話が変わる。mv report.txt backup は「report.txt を backup という名前に変える」という、まったく正しい命令として通ってしまう。
毎晩ログを片付けているつもりのその一行が、実は毎晩ファイルを1つ backup という名前に変え、前の晩のものを上書きし続けている。エラーは出ない。
守り方は簡単で、行き先の末尾に / を付ける。mv *.txt backup/ なら、backup がディレクトリでないときはエラーで止まる。mkdir -p backup を先に打っておく、でもいい。
まとめて動かす一行は強い。強い一行ほど、狙いが外れたときにどこへ飛ぶのかを知っておきたい。
