面倒は自動化しよう(.sh)
環境
Ubuntu Desktop 20.04.3 LTS
事例
rust で競プロをする際にcargo compete を使っている。しかし使用時に目的のディレクトリに移動、cargo compete new
、vscodeで開くという作業は地味に面倒である。
方策
シェルスクリプトを作成して一連の作業を自動化する。
ディレクトリの構成はこのようになっている。
- root - atcoder - codeforces
rootはcargo compete new
を実行したいディレクトリであり、僕の環境では外付けのSSDのフォルダである。シェルスクリプトの名前はac.sh
とする(auto creation のつもり)。
#!/bin/bash if [ "$2" = "" ]; then echo "error: need contest name." exit 1 fi root="ここにルートディレクトリ" cd $root/$1 && cargo compete new $2 ; cd ./$2 && code .
使い方は
bash /[path]/ac.sh [platform] [コンテスト名]
で~
にac.sh
がおいてあるならば
bash ~/ac.sh atcoder abc200
など。これで作成からvscode起動までやってくれる。
適当なエラー処理で実装したが、コンテスト名が空白だと面倒が起こるためそこの処理はした。
cargo compete new
の後ろが;
になっているのはすでにディレクトリが存在するというエラーが起きたときにもvscodeを開くためである。
エイリアス
毎度bash ac.sh atcoder abcxxx
で実行するのは面倒である。alias で簡略化することでこれを回避する。「Bash環境でエイリアス(alias)の定義をしよう」を参考にした。
恒久的にエイリアスを定義したいから
sudo nano ~/.bashrc
で
alias competeac="bash ~/ac.sh atcoder" alias competecf="bash ~/ac.sh codeforces"
と追記した。追記部分はわかりやすくするために個人的に上の方に書いた。
これによってatcoderであれば
competeac abcxxx
でabcxxxが作られるのである。簡単で素晴らしい。