コピー先に連番が扱えるようにcpの拡張を作ってみた
今までプログラミングコンテストに望む際に、template.cppをA.cpp, B.cpp, ... , E.cppにコピーする必要があり、これが非常に面倒でした。
先日zmvコマンドの記事(http://mollifier.hatenablog.com/entry/20101227/p1)を読んで、もしかして簡単に連番のcpが出来るのかなと思い、探してみるもなかなか見つかりませんでした。
bashやzshは「{1..5}」を「1,2,3,4,5」に展開してくれる機能があるので、これで行けるかと思いましたが、どうもcpには上手く使えないもよう。「touch A{1..5}.txt」とかは動くのに・・・。
見つからないのなら作っちゃおうということで作ってみました。
https://github.com/mkiken/Small_Programs/tree/master/ccp
始めは何を思ったかPerlで作っていましたが、RubyやPythonの構文糖衣に慣れている僕にはPerlの構文は辛かったので、Rubyで書き直し。
Perlでの実装時に一番悩んでいたのが連番の作り方。"a9"の次を"b0"にすべきかどうか?またどう実装するか?
RubyのStringクラスにはsuccというメソッドがあり、
"a9".succ # => "b0"
となります。こんな便利なメソッドがあるとはさすがRuby・・・。
適当な試作品ですが、
ccp templates/template.cpp temp/[A..E].cpp
のように使えるので、便利。