D言語はコンパイルが速くて、正直bashより慣れています。少し難しい処理とかはついついD言語で書いてしまうことが多いです。(本当はpythonとか使うべきなのでしょうが...)。
しかしD言語は静的言語。コンパイル -> 実行としなくてはいけないわけです。
そこで、D言語のソースファイルをまるでスクリプトのように扱おうというのが今回の記事です。
#Zshのalias -sを使う。
自分は一応Zsh使いなので、Zshの機能を使います。と言うか、この機能に関する他の方の記事をみて改良?いしました。
alias -sを使うと、特定の拡張子の時に、コマンドを省略して実行できます。
alias -s py=python
print("Test")
zshの設定に反映した上で、
namachan-PC% ./test.py
Test
こんな感じに出来ます。便利ですね。
これを応用して、
function rundmd(){
dmd $1
base=$1
file=${base%.*}
file
rm -f ${file}
rm -f ${file}".o"
}
alias -s d=rundmd
こうすれば、D言語のソースファイルをDMD(公式コンパイラ)を使って、Pythonの例のように実行できます!やったー!
と、思ったんですが、
rdmdというのがあったのを思い出しました...。これを使うと、rundmd関数が要らないみたいです...
先に気づけ自分。
追記
恐るべきことに、alias -s
すら要らなかったようです。
tm_tnさんにコメントで教えて頂いたのですが、D言語の場合、
#!/use/bin/rdmd
(/usr/bin/rdmd
のところはインストールした場所)
で同じように出来てしまいます。
ま、まあ、Zshなら#!/usr/bin/rdmd
の手間が省けるよーってことで...
##GCC
一応置いときます。
function rungcc(){
gcc $1
base=$1
file=${base%.*}
./a.out
rm -f a.out
}
alias -s {c,cpp}=rungcc
上記のDMDの例を改造したら大体の静的言語でも同じように出来ると思います。
シェルスクリプトを使っているので、多少複雑なコンパイルでもいけるのが強みです。
bashスクリプトは完全に初心者なので、効率化出来る部分とかあったら教えていただけると嬉しいです。