・makeでコンパイルする習慣をつける
競技プログラミング的な問題のためにコードをコンパイルするとき、いつも
$ g++ hoge.cpp -o hoge.out
と書いていた。.outにするのは.oだと文字数が.cppと合わないし実行ファイルだから拡張子無しってするとディレクトリと区別がつきにくいし、という理由。んで常にファイル名を一致させて.outにコンパイルするから、
$ g++ hoge.cpp
くらいで済ませてエイリアス噛ませたいとか考えたけど、便利なことにmakeというコマンドがあるから、これにファイル名を入れればOKということにする。でもパターンルールがよくわかってなくて、ぐにぐに調べて適当に書いてみた結果、
//Makefile %: %.cpp g++ $^ -o $@.out
としたら、
$ make hoge
でいつも書いている冒頭のコマンドになってくれた。これからはmakeでコンパイルしようね。
・テストのためのリダイレクトを省略する
同じように、競技プログラミングのコード書くときは、テストで
$ ./hoge.out < hoge.in
なんて書いたりしてた。これも面倒なので、シェルスクリプトを書く。
//io.sh ファイル名にセンスがないし絶対他に何かと被る、iojsとか #!/bin/sh if [ $# -ne 1 ]; then echo 'only one argument: ./$1.out < $1.in' return 1 fi ./$1.out < $1.in exit 0
exitとか要るんかと思うけどとりあえず書いた。実際に使うためのシェルスクリプトを書いたのは初めてかもしれない(さっぱりたいしたことを書いてないけど)。
ともかくこれで、相変わらずaliasで alias io='~/.../io.sh'みたいにして(シェルスクリプトまとめておくフォルダも作ったから忘れないように)、
$ io hoge
でやりたいことができるようになった。