Challenge Perl!

last-modified: 2nd/June/'01;
since: 1st/June/2001;

Shell Prompt

UNIX では、 Windows や Machintosh などとは異なり、その操作は、コマンドと呼ばれる文字列を、キーボードから打ち込む事によって実行します。 Win. や Mac. のように、アイコンやカーソルなどによって、視覚的に操作できるインターフェィスを GUI (Graphical User Interface) と呼びますが、これに対して、 UNIX のようなコマンド入力によるインターフェィスを CUI (Character User Interface) と呼ぶことがあります。

因みに、 UNIX 系 OS でも GUI が提供されており、一般には XWindos と呼ばれています。コマンドラインからは xinit コマンドで起動できます。さらに、 GUI マネージャ上で機動する統合デスクトップ環境が提供されており、 Linux では startx で GUI デスクトップが起動でき、 GNOME, KDE が有名です。他の UNIX 系 OS でも GUI のデスクトップが利用できるはずですので、確認してみると良いでしょう。

UNIX のコマンドラインでは、コマンドを、 %$, > のような記号に続けて入力します(この記号は、シェルの種類によっても多少異なり、利用者の好みに応じて変更できます。一般には環境変数の PS1, PS2 で設定します)。この記号は、シェルプロンプトと呼ばれるもので、シェルと呼ばれるプログラムが、コマンド入力を待機している状態を表します。 UNIX のログアウト、コマンド入力は全てシェルプロンプトから実行します。

シェルの仕事は、利用者のコマンド入力を解釈し、 OS の本体(カーネル)に渡すことです。シェルには種類が幾つかあり、一般には、 sh(Bourn シェル)、 csh(C シェル)、 tcshksh(Korn シェル)、bash(Bourn Again シェル)、 zsh(Z シェル)などが利用されています。私は tcsh を使いますが、Linux では bash が標準です。 他にも、 IBM の AIX では ksh が標準になっているなど、個々の OS によって異なります。

tcsh の場合は、そのバージョンが、 echo $version から確認できます。 echo はその引数を返す函数で、 $versiontcsh のバージョンとオプションが代入される変数です。

SAMPLE>>

 1:
 2:
 3:
% echo $version
tcsh 6.05.00 (Cornell) 94/19/06 (sparc-sun-solaris) options 8b,nls,dl,al,kan,rh
%

上の出力例では、一行目がキーボード入力で、二行目がその応答であり、 tcsh のバージョン情報です。

上の例では、UNIX のシェルプロンプト% で表しました。 tcsh ならば、シェルプロンプトから set prompt を実行することで、シェルプロンプトの記号を変更できます。

SAMPLE>>

 1:
 2:
 3:
% set prompt="%l%%"
phys% set prompt="{%n@%l}[%/]%#"
{sugai@phys}[/home/perl/perl]>

bash ならば、プロンプトの記号を保持するシェル変数は PS1 であり、エスケープシーケンスは \ (バックスラッシュか円マーク)です。

ログインシェル(ログイン時に自動的に起動するシェル)自体を変更するには、シェルプロンプトから chsh (change shell を意味するコマンド)と記述します。

chsh を実行すると、パスワードによるユーザ確認が行われ、利用可能なログインシェルの一覧が表示されます。が、 chsh に対して command not foud (コマンドが定義されていません)が返ってくる場合もありますし、現在利用しているシェル以外は利用できない場合もあります。例えば、 Linux では、殆どのディストリビューションで bash 以外は利用できません。

UNIX や Linux にも GUI は実装されています。例えば、 UNIX には、 X ウィンドウ・システムが標準装備されている筈です。他にも、 SunView, GMW などが使われています。UNIX にはベル研究所が開発した System V 系とカリフォルニア大学バークレー校で開発された Free BSD という系譜があり、現在ではその両方の良いところを採用したものになっています。製品としては Solaris, HP-UX, AIX, FreeBSD などの種類が提供されています。特に Solaris は絶大なシェアを誇っており、通常 Sun OS と云えば Solaris 1 (Sun OS 4)、 Solaris と云えば Solaris 2 (Sun OS 5) を指します。

これらの各種 UNIX の他に、 UNIX 系 OS として、ターネンバウム氏の開発したOS学習用OSである MINIX、 Linus B. Torvalds 氏による Linux などが存在します。

Linux は Torvalds 氏を中心にオープンソースで開発が続けられています。現在では、多数のディストリビューションが存在し、最初からウィンドウシステムが起動する筈です。特に、 Linux は、 Vine Linux, HOLON Linux, Debian GNU/Linux, SuSE Linux, LASER5 Linux, Red Hat Linux, TurboLinux, Miracle Linux など多くのディストリビューションが存在し、無料、または安価な上に、非常に使いやすいモノになっています。但し、未だ実験的な要素が残るので、デスクトップ環境として利用する場合は Windows とのマルチブートが現実的な選択でしょう。一方、サーバ用途、組み込み用途としては急速に普及し、実績を重ねています。

Perl

上記のようなシェルプロンプトから、 Perl を実行してみましょう。

SAMPLE>>

 1:
 2:
 3:
% perl -e 'print "Hello, World! \n";'
Hello, World!
%

一行目の、 perl -e は UNIX のコマンドで、 -e スイッチをつけて perl を呼んでいます。一重引用符( ')の間が perl スクリプトで、これが perl -e に渡されます。

スクリプトの、 print は、 Perl 内部で定義されている命令(組み込み函数)です。実行されると、後続の二重引用符( " )の間を画面に表示します。

最後の \n改行命令です。これを抜かして記述してみれば、その働きが分かるでしょう。

具体的な動作は、一行目をシェルプロンプトに記述し、 Enter (Return) を押すと、一行下に Hello, World! と記述される筈です。

このような、一行だけの perl スクリプトをワンライナーと呼びます。 telnet で UNIX にアクセス出来る方は、是非、試してみてください。

Copyright: SUGAI, Manabu. Since: 2001
FC2> モビット