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
がお勧めです。ただし、多少好き嫌いはありそうですが。