面倒は自動化しよう(.sh)

環境

Ubuntu Desktop 20.04.3 LTS

事例

rust で競プロをする際にcargo compete を使っている。しかし使用時に目的のディレクトリに移動、cargo compete newvscodeで開くという作業は地味に面倒である。

方策

シェルスクリプトを作成して一連の作業を自動化する。
ディレクトリの構成はこのようになっている。

- 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が作られるのである。簡単で素晴らしい。