UNIX入門:0. "HelloWorld!"
UNIXでプログラミングをしてみましょう。「プログラミング?そんなのできるの?」といった疑問や不安は要りません。次の作業を順を追って,1つ1つ,丁寧にこなすだけです。面倒臭がらずやるか否かのみです。
ここで作成するプログラムは,ただ単に次を表示するという単純な作業をさせるプログラムです。
Hello World! Message
ですが,プログラミングの第一歩は,そのような簡単な作業をさせるか否かではなく,先ずはプログラムを書くか否かにあるといえます。
0.0. 準備
プログラムを書くと,その内容を一つのファイルとして残します。その保存場所を作りましょう。UNIX のサーバーに接続した状態,あるいは UNIX のターミナルの画面から,太字部分を入力毎にリターンを押します。
% mkdir My_Programs (プログラムを保存するディレクトリ"My_Programs"を作成) % cd My_Programs (ディレクトリ"My_Programs"へ移動)
注) 次回 login
時は,"cd My_Programs
"と打てば,同じ状態になります。
「ディレクトリ」とは,Macintosh や Windows でいうフォルダ。
準備完了。
0.1. シェル
「シェル」は,UNIX のコマンド解釈装置でもあり,コンピュータの起動処理もシェルで書かれている程,UNIX を動かす上での基礎的要素。カーネル(kernel, 核)と呼ばれる中枢部分をあたかも覆う貝殻(shell)という意味合い。ここでは,そのようなシェルを使って,プログラムを作ってみます。
文字をファイルに書くために「エディタ」と呼ばれるソフトを利用します。UNIX には,"vi" や "emacs" といった有名なエディタがあります。ここでは,余り日本では使われていないエディタ"pico"を利用してみます。(pico は,私が Ph.D を取得した大学,University of Washington が作成したエディタ。機能は余りないが,単純明快で良い。)
pico を起動します。
% pico
すると,次のような画面になるでしょう。(現在は,GNU nano になっています。)
|
■pico 操作方法
^ (caret) は,「control (CTRL) キーを押しながら」という意味。
・pico 終了:^X
・ファイルの保存:^O
・カーソルがある文字の削除:^D
・カット:^K
・ペースト:^U
・文字列探し:^W
・マニュアル:^G
さあ,いよいよ,プログラミングです。次の青字部分を打ってください。(改行は,リターンキー。"Message" 部分には,好きなメッセージを。)
|
注意) 1行目にある /bin/sh
は,奥山研究室のサーバーの場合です。他のサーバーの利用者は,エディタを起動する前に,次を実行してください。
% which sh
その答えを /bin/sh
部分に入力します。
出来ましたか?それでは,ファイルを保存します。次の手順を踏んでください。
- pico におけるファイル保存
^O
(ファイル保存入力画面へ)- "
hello.sh
"と入力し,リターン。 (ファイル名 "hello.sh
" で保存) ^X
(pico 終了)
これで"hello.sh
"という「シェル・スクリプト」(プログラム)ができました。実行させましょう。
実行方法は,次の通りです。
% sh hello.sh
すると,次のようになるはずです。
% sh hello.sh Hello World! Message %
実行権を与えると,"./hello.sh
"と打つだけで動きます。
% chmod u+x hello.sh (あなた (user) だけに実行 (excute) の権限を与える (+)) % ./hello.sh (hello.sh を実行) Hello World! Message %
0.2. Perl
Perl は,インターネットでのチャットや掲示板,アクセス・カウンターなどの CGI で利用されているスクリプト言語です。シェルと次に扱うC言語の良い要素を使いやすくまとめたような言語で,CGI だけでなく,様々な用途に使用可能ですので,多くの方が利用しています。
早速,プログラミングしましょう。エディタを使って,次のように入力してください。
#!/usr/bin/perl print "Hello World!\n"; print "Message\n";
注意) 1行目にある /usr/bin/perl
は,奥山研究室のサーバーの場合です。他のサーバーの利用者は,エディタを起動する前に,次を実行してください。
% which perl
その答えを /usr/bin/perl
部分に入力します。
入力完了後,"hello.pl
"として,ファイル保存してください。これで"hello.pl
"という「Perl スクリプト」の完成です。
実行方法は次の通りです。
% perl hello.pl
シェル・スクリプトのときと同じように,実行権を与えれば,"./hello.pl
"と打つだけで動きます。実行権の与え方は,次の通り。
% chmod u+x hello.pl
0.3. C言語
シェルにしても Perl にしても,実行権を与える前は,次のように実行のためのコマンドを打つ必要がありました。
% sh hello.sh % perl hello.pl
これらの意味は,シェル・スクリプトの場合には「シェル (sh
) がスクリプト"hello.sh
"の中身を解釈し実行しなさい」,Perl スクリプトの場合には「Perl (perl
) がスクリプト"hello.pl
"の中身を解釈し実行しなさい」というものです。すなわち,「スクリプトの解釈 -> 実行」という手順を踏んでいる訳です。このような言語を「インタプリタ」と言います。
これに対し,実行ファイル用のソースを作成し,そのソース・ファイルから実行ファイルを生成する方法があります。このような言語を「コンパイラ」と呼びます。コンパイラの場合,「ソースの作成 -> 実行ファイルの生成 (コンパイル) -> 実行」という流れになります。当然,実行ファイルが既にあるということは,インタプリタに比べれば,「解釈」がないだけ実行速度が速くなることを意味します。
コンパイラで有名なのは,何と言っても,「C言語」です。付録に示しましたが,UNIX の OS を最初に作成した人が C言語の作者であり,UNIX の OS は C言語で書かれています。ここでは,C言語によるプログラミングを見ます。
(a) ソースファイルの作成
コンパイラの場合,「ソースの作成 -> 実行ファイルの生成 (コンパイル) -> 実行」という流れでした。ここでは,ソースを作成します。
エディタを起動し,次を入力し,"hello.c
"というファイル名で保存してください。
#include <stdio.h> int main (void) { printf ("Hello World! \n"); // \n の \ は,JISキーボードの場合,円マーク ¥ です。 printf ("Message \n"); return 0; }
これで "hello.c
" という「ソース・ファイル」の完成です。
(b) コンパイル
次は,コンパイルです。
% cc -o hello.out hello.c
エラーメッセージが何もでなければ,コンパイル成功です。"hello.out
" という実行ファイルが出来上がっています。
(c) 実行
実行には,"./hello.out
" のみです。実行権をわざわざ与える必要はありません。
% ./hello.out Hello World! Message %