DOS のバッチファイル(.BAT ファイル)は長いコマンドラインのショートカッ
トを作るのによく用いられます(私はそういう風によく使いました)。Linux で
各種コマンドへのショートカットを作るには、適切な alias 行を
profile か .profile に記載します(上記の例を見てくだ
さい)。でも、バッチファイルをより複雑な目的に使っていたならシェルのス
クリプト機能を使うのが便利でしょう。シェルのスクリプト機能は QBasic と
同等の機能を持っています。シェルスクリプトは変数や while, for, case,
if... then... else といった制御構造など、多くの機能を持っています。シェ
ルスクリプトは多くの場合「本物」のプログラム言語の代りに使えます。
シェルスクリプト --- DOS の .BAT ファイルの同等物 --- を書くには、必要
な指示を並べた通常のアスキーファイルを作り、セーブして chmod +x
<scriptfile> として実行許可を与えます。実行するにはそのファ
イル名を入力します。
一言注意しておきますと、システムに付属のエディタは通常 vi で
すが、私の経験から言うと、ほとんどの新しいユーザには vi は使い
づらいようです。私自身 vi は好きではないし使ってもいないので、
ここでは使い方の説明はしませんが、必要ならば Matt Welsh の ``Linux
installation...'' を参照してください(X が動くなら joe や
emacs のような別のエディタを使う方がいいと思います)。ここでは
vi については以下のコマンドだけを説明しておきます。
vi を終了するには <ESC> を押してか
ら :q! を入力。
bash のスクリプトの書き方についてはそれだけで本が一冊必要にな
るので、ここではこれ以上は触れずに、基本的な使い方が分かるサンプルスク
リプトを示すだけにしておきます。
#!/bin/sh
# シェルスクリプトのサンプル
# これはコメント行
# 1 行目は変更しないこと。#!/bin/sh は1行目にないといけません
echo "This system is: `uname -a`" # use the output of the command
echo "My name is $0" # built-in variables
echo "You gave me the following $# parameters: "$*
echo "First parameter is: "$1
echo -n "What's your name? " ; read your_name
echo look the difference: "hi $your_name" # quoting with "
echo look the difference: 'hi $your_name' # quoting with '
DIRS=0 ; FILES=0
for file in `ls .` ; do
if [ -d ${file} ] ; then # if file is a directory
DIRS=`expr $DIRS + 1` # DIRS = DIRS + 1
elif [ -f ${file} ] ; then
FILES=`expr $FILES + 1`
fi
case ${file} in
*.gif|*jpg) echo "${file}: graphic file" ;;
*.txt|*.tex) echo "${file}: text file" ;;
*.c|*.f|*.for) echo "${file}: source file" ;;
*) echo "${file}: generic file" ;;
esac
done
echo "there are ${DIRS} directories and ${FILES} files"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # exit code of last command
echo "ZxY--!!!WKW not found"
fi
echo "enough... type 'man bash' if you want more info."
Unix では、好き嫌いにかかわらず、システム言語は C です。その他の言 語(FORTRAN, Pascal, Lisp, Basic, Perl, awk...)も利用可能です。
すでに C については御存知のこととして、ここでは Turbo C++ やその親戚を
使ったことがある人向けにいくつかのガイドラインを紹介します。Linux での
C コンパイラは gcc で、DOS の C コンパイラに付いてくるような
統合環境やオンライン・ヘルプ、統合デバッガの類いは一切ありません。
gcc は単なるコマンドライン・コンパイラですが、きわめて強力か
つ効率的です。標準的な hello.c プログラムをコンパイルするには
$ gcc hello.c
とします。この結果、a.out と呼ばれる実行形式が作成されます。
実行形式に別の名前を付けたいなら、
$ gcc -o hola hello.c
のようにします。
何らかのライブラリをリンクしたければ -l<libname> スイッチを付け ます。例えば、数学ライブラリをリンクするなら
$ gcc -o mathprog mathprog.c -lm
とします。
(-l<libname> スイッチを使うと gcc は
/usr/lib/lib<libname>.a という名前のライブラリをリンク
します。ですから、-lm を指定すると /usr/lib/libm.a
をリンクします)
簡単なプログラムならばこれで十分ですが、コンパイルするプログラムが複数
のソースファイルからできている場合、make というユーティリティ
を使うのが一般的です。何らかのパーサを書いているとしましょう。このソー
スコードは parser.c というファイルになっており、
parser.h と xy.h の 2 つのファイルをインクルードしま
す。さて、 calc.c というプログラムの中で parser.c の
中にあるルーチンを使いたくなりました。calc.c は
parser.h をインクルードします。さて、calc.c をコンパ
イルするにはどうすればいいでしょう?
この場合、makefile と呼ばれるファイルを書くのがいいでしょう。
makefile はコンパイラにソースファイルとオブジェクトファイルの
依存関係を教えます。今回の例では以下のようになります。
# calc.c をコンパイルするための makefile # 適切な場所で <TAB> キーを入力すること! calc: calc.o parser.o <TAB>gcc -o calc calc.o parser.o -lm # calc には calc.o と parser.o が必要 calc.o: calc.c parser.h <TAB>gcc -c calc.c # calc.o には 2 つのソースファイルが必要 parser.o: parser.c parser.h xy.h <TAB>gcc -c parser.c # parser.o には 3 つのソースファイルが必要 # これでお終い
このファイルを makefile という名前で保存して
$ make
とすると、プログラムがコンパイルされます。あるいは calc.mak
という名前で保存して、
$ make -f calc.mak
とすることも可能です。詳細については RMP してください。
man ページの 3 章には C の関数についての説明があります。
$ man 3 printf
Linux にはさまざまな種類のライブラリが公開されています。まず最初に紹介
すべきはテキストモードで各種の効果を出すための ncurses ライブ
ラリとグラフィック用の svgalib でしょう。X プログラムに挑戦す
る勇気があれば、XForms ライブラリ(
bloch.phys.uwm.edu:/pub/xforms) と/あるいは MGUI
ライブラリ(
www.volftp.vol.it:/IT/IT/ITALIANI/MORELLO/index.htm) を入
手してみましょう。この 2 つのライブラリは X でのプログラムをずっと簡単
にしてくれます。ボーランド風の統合環境が無いと困る人は
sunsite.unc.edu:/pub/Linux/apps/editors/ から入手できる
xwpe がお勧めです。ただし、多少好き嫌いはありそうですが。