next up previous contents
Next: 3 time で時間を計ろう Up: 実験に役立つテクニック集    V1.2 Previous: 1 電卓を使おう

2 シェル・スクリプトで簡易コマンドを作ろう

--決まりきったことはコンピューターに自動的にやらせよう。--

キーボードからコマンドをタイプして、コンピューターを操作する場合、ユー ザーのキー入力を読み取って解釈し、必要なプログラムを起動する、という仕 事が行われている。その仕事をするのも一つのプログラムで、一般にコマンド・ インタープリター (コマンドを解釈するもの、という意味) と呼ばれているが、 UNIX ではシェル (shell, 貝殻) と呼ばれる2Bourne shell (sh), C shell (csh), tcsh, Born again shell (bash) などが有名である。

UNIX の shell では、shell script (shell の台本) と言って、 キーボードからコマンドをタイプする代わりに、ファイルにコマンドを書いて おいて、それを順番に実行させる、という機能がある。

キーボードから打つのが面倒になるような、長いコマンドのうち、 いつも同じ部分である部分が多い場合など。 例えば、 matrix library と GLSC library を用いた C プログラム myprog.c をコンパイルして、 myprog という実行可能プログラムを作るには、

oyabun% gcc -o myprog -I/usr/local/include myprog.c -lmatrix -lglscd -lX11 -lm

のようなコマンドをタイプする必要があるが、
ccmg
gcc -O -o $1:r -I/usr/local/include $* -lmatrix -lglscd -lX11 -lm

のような内容のファイル ccmg をエディターで作っておいて、

oyabun% chmod +x ccmg

oyabun% ls -l ccmg
-rwxr-xr-x 1 mk lab00 80 Jan 24 20:27 ccmg*x がある
oyabun%

と実行可能属性にしておき、path に登録してあるディレクトリィにコ ピーしておけば

oyabun% ccmg myprog.c

とするだけで OK である。

シェルには、繰り返しのコマンドなどもあるので、便利である。例えばxv というコマンドは一度に一つのファイルしか処理できないので、たくさん のファイルを順に処理するのは面倒である。そこで
xvs
#!/bin/csh
foreach i ($*)
        xv $i
end

あるいは
xvs
#!/bin/sh
for i in "$@"
do
        xv $i
done

のようなスクリプトを書けば、
  xvs *.jpg *.gif

のような使い方が出来る。


next up previous contents
Next: 3 time で時間を計ろう Up: 実験に役立つテクニック集    V1.2 Previous: 1 電卓を使おう
桂田 祐史
2014-05-27