wsl環境にmvswapを導入した話

ファイル名の交換コマンド: mvswap - シリコンの谷のゾンビ

ほぼこの方の通りに設定したが、Ubuntu(WSL)ではmktempが使えなかったのと、その他もろもろエラーを吐かれたので以下のようにコードを変更した:

#!/bin/sh
TMPNAME=".tmp-hoge-fuga-piyo"

if [ $# -eq 2 ]
then
    mv $1 $TMPNAME
    mv $2 $1
    mv $TMPNAME $2
fi

TMPNAMEを定めているところは、まあしょうがないと思おう。多分調べればmktempに相当する機能があるだろうがめんどくさくなった。

それから、このファイルを適当なディレクトリ(今回は/mnt/c/code/)にmvswapで保存し、pathが通っているフォルダ:

$ echo $PATH
/home/(ユーザ名)/.local/bin:/home/(ユーザ名)/.nvm/versions/node/v16.0.0/bin:...(その他もろもろ)

のうちの、/home/(ユーザ名)/.local/binに移し、権限を755(rwxr-xr-x)に変更する:

$ cp /mnt/c/code/mvswap /home/(ユーザ名)/.local/bin

$ sudo chmod 755 /home/(ユーザ名)/.local/bin/mvswap

あとは元記事同様本当にできているかを確認すればOK。

今後atcoder-cliが落としてきてくれたテストファイルを

/mnt/c/code/atcoder/ABC051-100/abc077/c/test$ mvswap sample-1.in sample-3.in
/mnt/c/code/atcoder/ABC051-100/abc077/c/test$ mvswap sample-1.out sample-3.out

のようにすれば、容易に入れ替えることができる。前回qiitaに投稿した

Visual Studio Code with WSLでatcoder-cliを使いつつデバッグもできる環境構築 - Qiita

内ではデバッグ時の標準入力をsample-1.inに指定していたので、WAとなっているsampleファイルをmvswapでsample-1.inと交換すればそのサンプルケースでデバッグすることができるようになる。