UNIX世界への手引書

UNIX世界への手引書
vi,ngエディタ & コンパイラ編
+ 電子ニュースとメール入門
平成10年4月 改訂第3版
芝 治也
目次
第1章 コンピュータシステムの概要......................................................................................... 1
1-1 コンピュータシステムについて ................................................................................................. 1
1-2 ソース・プログラムの処理......................................................................................................... 2
1-3 ファイル .................................................................................................................................... 2
1-4 ディレクトリ.............................................................................................................................. 3
1-5 エディタ .................................................................................................................................... 3
第2章 UNIXのコマンド.................................................................................................... 4
2-1 UNIXシステムの利用方法と作業の終了方法 ......................................................................... 4
2-1-1 UNIXシステムの利用方法 .............................................................................................. 4
2-1-2 UNIXの作業の終了方法.................................................................................................. 5
2-1-3 まず始めにパスワードの変更 .............................................................................................. 5
2-1-4 パスワードの決まりと注意.................................................................................................. 6
2-2 UNIXのコマンド ................................................................................................................... 6
2-2-1 情報を知るためのコマンド.................................................................................................. 6
2-2-2 作成・削除に関する命令 ..................................................................................................... 7
2-2-3 移動に関する命令................................................................................................................ 8
2-2-4 印刷に関する命令................................................................................................................ 8
第3章 VIエディタの使い方................................................................................................. 9
3-1 VIエディタの起動のさせ方 ...................................................................................................... 9
3-2 VIエディタの編集コマンド....................................................................................................... 9
3-2-1 カーソル移動と文字の検索コマンド.................................................................................... 9
3-2-2 文字入力コマンド...............................................................................................................10
3-2-3 文字削除コマンド...............................................................................................................10
3-2-4 文字,行の置換(文字の上書き訂正) ...............................................................................10
3-2-5 行単位のコピー・貼り付け.................................................................................................10
3-2-6 特殊なコマンド ..................................................................................................................11
3-3 ファイル操作とVIの終了 .........................................................................................................11
3-4 NG エディタのコマンドリファレンス ........................................................................................12
3-4-1 ng 起動,カーソル移動と文字の検索コマンド ...................................................................12
3-4-2 範囲(リージョン)指定と削除..........................................................................................13
3-4-3 ファイル操作とngの終了.................................................................................................13
3-4-4 特別な命令 .........................................................................................................................13
第4章 FORTRAN のコンパイルと実行..................................................................................14
4-1 コンパイラ:F77とG77 .....................................................................................................14
4-2 プログラムの実行とリダイレクション機能の利用 ....................................................................15
4-2-1 プログラムの実行...............................................................................................................15
4-2-2 リダイレクション機能の活用 .............................................................................................16
第5章 電子ニュースとメールの利用........................................................................................17
5-1 電子ニュースの読み方 ..............................................................................................................17
5-2 電子メールの読み方 ..................................................................................................................19
5-3 電子メールの書き方と送り方 ....................................................................................................21
特別付録 困った時にみるページ............................................................................................22
後書き ............................................................................................................................23
改訂第 3 版によせて............................................................................................................23
第1章 コンピュータシステムの概要
1-1 コンピュータシステムについて
コンピュータシステムは,機械的な目にみえる部分(ハードウエア)と目にみえない
部分(ソフトウエア)からできています.ハードウエアは図 1のように中央処理装置
(CPU),主記憶装置(メインメモリ),補助記憶装置(フロッピーディスクやハード
ディスク等),入力装置,出力装置によって構成されています.
入力装置にはキーボードやマウス等があり,出力装置には,ディスプレイ,プリンタ,
プロッタなどがあります.
CPU
出力装置
メモリ
入力装置
コンソール
HD,FD
周辺装置(デバイス)
図 1コンピュータのハードウエア
ソフトウエアは,基本プログラムである OS(Operating System:オーエス)とサービ
ス・プログラム,応用プログラム(アプリケーション・プログラム)に分類できる.
OS はコンピュータの実行処理を制御するためのプログラムで,ユーザ(利用者)が
作成する必要はありません.CPU と周辺装置との情報のやり取りのルールは OS によっ
て規定されています.NEC や IBM 系のパソコン用 OS には MS-DOS(Microsoft Disk
Operating System)や Windows95 などが使用されていますが,ワークステーション
(Work Station:WS)や大型汎用機では UNIX(ユニックス)が多く使用されています.
UNIXはOSなのだ!!
サービスプログラムはユーザの様々な要望に応えるためのプログラムで,システムと
して提供されるものです.これは標準化されたユーティリティプログラムと,コンパイ
ラやインタプリタ(いずれもテキストファイルを機械語に翻訳するプログラム)などの
言語プログラムに分類されます.
アプリケーションプログラムとは,ワープロソフトなどのようにソフトウエアメー
1
カーが製作して販売している物もありますが,ユーザが計算処理,情報処理をするため
に作成したものを指して言います.我々がアプリケーションプログラムを作成するため
には FORTRAN,BASIC,C などのプログラム言語を用います.もちろん市販されている
アプリケーションプログラムを利用することも出来ます.アプリケーションプログラム
は略してアプリとかソフトと呼ばれることもあります.
→ “言語プログラム”と”プログラム言語”の違いに注意!!
1-2 ソース・プログラムの処理
ユーザがプログラム言語で記述したソース・プログラム(原始プログラム)は,その
ままでは単なる文字のら列でしかありません.したがってコンピユータに実行させるこ
とはできません.ソース・プログラムは,コンパイラによってコンパイル(翻訳)され
て,コンピュータが理解できる言語(機械語)になります.翻訳されたプログラムはオ
ブジェクト・モジュールと呼ばれます.
このオブジェクト・モジュールをローダを使って関数ライブラリなど(これらもオブ
ジェクト・モジュールであり,システムで提供されている)とリンク(結合編集)して,
目的を実行できるプログラムを作成すことになります.こうしてできたプログラムを
ロード・モジュールとか実行形式ファイルと言います.
ファイルの作成や削除
ファイルのコピー
パスワードの設定
etc.
ユーティリティ
ソース
ファイル
コ
ン
パ
イ
ル
コ
ン
パ
イ
ラ
ロ
|
ダ
リ
オブジェクト
ファイル
ン
ク
言語プログラム
テキストエディタ
O
実行形式
ファイル
アプリケーション
S
図2 OS上のプログラムと実行形式ファイルの作成手順
1-3 ファイル
補助記憶装置に記憶されているひとかたまりの情報のことをファイルと言います.こ
れには,テキスト(文字)を格納しているプログラムのソースファイルやプログラムで
利用するデータファイルなどがあります.他にも文字の形式ではない,オブジェクト・
モジュールやロード・モジュールなどのバイナリ形式ファイルもあります.
2
1-4 ディレクトリ
ファイルが多くなると目的のファイルを探すのだけでも大変です.そこでディレクト
リ1というファイルを入れる小部屋を作って管理する仕組みが作られています.ディレク
トリの中に更にディレクトリを作ることが出来るので,幾段かの階層構造になっている
のが普通です.
ディレクトリの区切りを表示するのには¥や/が使われます.例えば kochi という
ディレクトリの中に nankoku というディレクトリがあって,nankoku の中には kosen
というファイルがあるとすると kosen を正確に表示すると
/ kochi / nankoku / kosen
と書き表すことになります.
1-5 エディタ
テキストファイルを作成したり編集したりするためのアプリケーションソフトウエア
をテキスト・エディタと言います.単にエディタとも呼ぶこともあります.一太郎など
のワードプロセッシング(ワープロ)ソフトもテキストエディタの一種です.
E2 の情報処理の授業は,UNIX を OS とした本校の学内ネットワーク上ですべての作
業を行います.エディタで書いたソースプログラムを f77 や g77 というコンパイラでコ
ンパイルして実行形ファイルを作成・実行しながら,FORTRAN 言語の文法とプログラ
ム作成の考え方や技術を学習していきます.
次の章では,UNIX の基礎とよく使う命令について説明します.
1
Directly:Apple 社の MacOS や Microsoft 社の Windows95 などではフォルダと呼んでいます.
3
第2章 UNIXのコマンド
UNIX は,コンピュータシステムを大人数で利用するのに適した OS です.したがっ
て一人々の利用者を識別する必要があります.そのためにユーザ登録とパスワードの設
定が義務づけられています.君たちはすでにユーザ登録されているハズです.ユーザ登
録して利用可能者になることを「ユーザ ID をもらう」なんて言い方もします.
2-1 UNIXシステムの利用方法と作業の終了方法
2-1-1 UNIXシステムの利用方法
学内の UNIX システムからなる学内 LAN(Local Area Network)は,年中無休で動き
続けています.我々がこれを利用するためには,情報処理センターやパソコン室のコン
ピュータから学内 LAN に接続する必要があります.2パソコン本体の電源をオンにした
後で,起動メニューから[Windows3.1]を選びます.Windows3.1 が起動した後でアプリ
ケーショングループにある接続ソフト[Wvtn]を実行します.
すると接続先を選択する小さなウインドウが出ますから,nova,galaxy,palsar のう
ちディスプレイに貼られているシールと同じ名前のところに接続するようにします.接
続プログラムが無事起動したら,画面に
login:
と表示されるはずです.ここでユーザ名3を打ち込んでリターンキーを押します.(以後
文字を打ち込んでリターンキーを押すことを入力するということにします)
次に”Password:”4と表示されるのでパスワード5 を入力します.このとき画面上には
打ち込んだ文字は表示されないようになっているので慌てないように.
ユーザ名,パスワードが正しければ数行のメッセージが出た後に
ユーザ名[1]:
← プロンプトという.
が表示されて UNIX の命令待ち(コマンド入力)状態になります.
これで UNIX の起動は完了です.この一連の操作をログインするといいます.ログイ
ンをしてネットワークに接続したコンピュータをネットワーク端末と呼びます.
2
具体的な接続の方法は,各コンピュータの手引書などを参照して下さい.ここでは情報処理センターの
Windows3.1 パソコンを利用することを想定して話を進めます.
3
君たちのユーザ名はクラスの入学期および出席番号で登録してあります.例えば平成10年度入学の電気工学科
出席番号1番の場合であれば「e3701」がユーザ名となります.UNIXでは大文字と小文字は区別するのでユー
ザ名は全て小文字で入力すること
4
端末が表示する文字は” ”でくくって表し,ユーザが打ち込む文字は「 」で表すことにします
5
最初に君たちの Password は student にしてあります
4
2-1-2 UNIXの作業の終了方法
作業を終了する場合,いきなり端末の電源スイッチを切ったりしてはいけません.プ
ロンプトが表示されているときに「logout」もしくは「exit」と入力すると,しばらく
して画面がクリアされて再び”login:”と表示されます.この状態でまず Windows3.1
を終了させます.その後ハードディスクアクセスの赤色 LED が消灯して,ハードディス
クが動いてないことを確認してから電源をオフにして下さい.これで全作業の終了です.
2-1-3 まず始めにパスワードの変更
最初にパスワードは,みんな同じ”student”になっているます.これでは他人が君の
ユーザ名でネットワークを利用してしまうばかりか,君の大事なファイルを改ざんした
り消してしまう可能性があります.まずパスワードを変更しましょう.
UNIX におけるパスワード変更用の命令(コマンド)は「passwd」です.このコマン
ドを入力すると”Old password:”と表示されるので,この後ろに現在のパスワード
「student」を入力します.ここでもやはり君がタイプした文字は,誰かに覗き見される
可能性があので一切表示されません.次に”New password:”と表示されるので新しいパ
スワードを入力します.すると確認の為に”Retype new password:”と聞いてくるので
新しいパスワードを再度入力して下さい.これでプロンプトが表示されたらパスワード
の変更は完了しています.
5
2-1-4 パスワードの決まりと注意
パスワードには英大文字,英小文字,数字,制御文字が使えます.1234 のように数字
のみで設定することはできません.パスワードの文字数は,数字とほかの文字を混用す
るとき,および制御文字を使用した場合には4文字以上,英大文字小文字を混用すると
きは5文字以上,大文字か小文字のみで設定するときには6文字以上が必要です.6例え
ば RedDragon や homecar など英単語を2つ並べるのがよく使われます.
誕生日など,簡単に見破られるようなパスワードにはしないように注意しましょう.
また毎回パスワードを変更するのも困りものです.(絶対忘れます (^^)
)
万が一自分のパスワードが分からなくなったときは,システムの管理者(スーパー
ユーザ)にお願いしてユーザ登録をやり直さなければいけませんから思いだしやすいも
のにしましょう.(こうなったら時間や手間がかかり大変です.)
2-2 UNIXのコマンド
本節でUNIXのコマンドを説明しますが,これらのコマンドを実行した結果異常が
生じて暴走したとき,あるいは実行を途中で打ち切りたいときには,コントロールキー
(CTRL)を押しながらcを同時に押すことによってコマンドの中断が行えます.
(これを CTRL+cと表す)またこれ以外にも CTRL+d,CTRL+¥を入力することでもコマン
ドの中断ができます.
UNIXでは英大文字,英小文字の区別があり,すべてのコマンドは英小文字で表さ
れていますので注意してください.前述の「password」もそうでした.
2-2-1 情報を知るためのコマンド
pwd
(print working directory)
今自分が作業しているディレクトリ(ワーキングディレクトリ,カレントディレクトリ
ともいう)を知ることができる.
pwd と入力する
ps
(process status)
どのようなプロセス(命令など)が動いているか確認することができる.
ps
6
これらの文字数のルールは,使っている UNIX の種類によっては異なる場合があります
6
ls
(list)
ワーキングディレクトリ内のサブディレクトリやファイルを調べる.-l オプション(エ
ルオプション)を付けることによって,より詳細な情報を知ることができる.
ls
ls
-l
cat
(catenate)
テキストファイルの内容を画面に出力して見る.
cat
ファイル名
more
(more)
長いファイルを1画面分ずつ表示する.同様の命令に less というのもある.
more
ファイル名
操作方法:1画面分の先送りにはスペースキーを押す.リターンキーなら1行送りとな
る.また後戻りさせるにはb(back),途中で終わりたいときにはq(quit)を押す.
cat filename │ more でも filename の内容を1画面分づつ表示できます.
man
(manual)
コマンドのマニュアル(説明書)を表示する.
man
コマンド名
2-2-2 作成・削除に関する命令
rm
(remove)
指定したファイルを削除する.
rm
ファイル名
mkdir
(make directory)
ディレクトリを作る.
mkdir
ディレクトリ名
rmdir
(remove directory)
空のディレクトリを削除する.
rmdir
ディレクトリ名
7
cp
(copy)
ファイルの複製を作る.
cp
ファイル名1
ファイル名2
ファイル名1のファイルをファイル名2にコピーする.
2-2-3 移動に関する命令
(change directory)
cd
今いるディレクトリから他のディレクトリに移動する.移動先を指定しなければホーム
ディレクトリに移動する.移動先を .. にすれば一つ上位のディレクトリに移動する.
cd
移動先
cd
..
mv
(move)
ファイル名の変更,ファイルの移動を行う.
mv
ファイル名1
[パス名]ファイル名2
動作:ファイル1の内容をファイル2にコピーしてからファイル1を削除する.
2-2-4 印刷に関する命令
lpr
(Line Printer)
ワークステーションに接続されているプリンターでテキストファイルを印刷する.
lpr ファイル名
UNIXには数多くのコマンドが存在するし,オプションを付けることによって様々
な機能を選択することができる.ここには必要最低限なコマンドだけを抜粋しているの
で,より詳しい使い方を知りたい人はmanコマンドや参考書7を頼りに自己学習してく
ださい.
7
UNIX関係の本は多くあるが,三上市蔵 著 ”SunユーザのためのやさしいUNIX”(オーム社)などは
特にお勧めしたい.本稿はほとんどこの本に依って書いている.これ以外では川原稔 著“what is UNIX”
(SOFT BANKS)が実践的で良い.
8
第3章 viエディタの使い方
viエディタはコマンドモードと文字入力モードの2つのモードを持っています.文
字や行の削除,コピー,カーソル移動,ファイルからの読み込みなど編集操作はコマン
ドモードで行います.viエディタは起動時にコマンドモードになっているので,文字
入力をするためには I や a を押して文字入力モードに切り替える必要があります.エス
ケープキー(ESC)を押すことによっていつでもコマンドモードになります.
3-1 viエディタの起動のさせ方
vi
編集したいファイル名
注意:FORTRAN 言語で書いたソースファイルのファイル名は,名前の最後に拡張子と
して .f を付ける決りになっていますので必ず付けて下さい.例えば 「test.f」
3-2 viエディタの編集コマンド
3-2-1 カーソル移動と文字の検索コマンド
命令
動作
←またはh
1文字左に移動
→またはl
1文字右へ移動
↑またはk
1行上へ移動
↓またはj
1行下へ移動
G
ファイルの最後にジャンプ
nG
n行目にジャンプ.1Gなら先頭行にジャンプする
/文字列
指定した文字列の先頭の文字へ移動(順方向検索)
?文字列
指定した文字列の先頭の文字へ移動(逆方向検索)
n
順方向に再検索
N
逆方向に再検索
注意:文末に向かうのが順方向,先頭に向かうのが逆方向
9
3-2-2 文字入力コマンド
a
カーソルの右にテキストを追加
A
カーソルがある行の末尾にテキストを追加
i
カーソルの左にテキストを挿入
I
カーソルがある行の先頭にテキストを挿入
3-2-3 文字削除コマンド
x
カーソル位置の文字の削除
X
カーソルの左側にある1文字を削除
dd
カーソルのある行全体を削除
d$またはD
カーソルのある位置から右側すべてを削除
d^
カーソルの左側すべてを削除
例えばカーソル位置から10行を削除したければ「10dd」とすればよい.
3-2-4 文字,行の置換(文字の上書き訂正)
r
カーソル位置の1文字を置換
R
カーソルのある位置から複数個の文字を上書き置換
s
カーソルのある1文字を複数個の文字で置換
S
カーソルのある行全体を置換
:s/古い文字列/新しい文字列/g
カーソル位置から文末に向かって,古い文字列で指定した文字列を検索して,見つ
かったすべての古い文字列を新しい文字列に置き換える
3-2-5 行単位のコピー・貼り付け
yy
カーソル行を記憶する
p
カーソル行の下行へペースト
P
カーソル行の上行へペースト
yy,あるいはdd(行削除命令)によって指定された行は,メモリ内にいったん記憶
されます.それを呼びだして文書中に貼り付ける(挿入する)ことをペーストといいま
す.行単位のコピーはyyで記憶してからコピーしたい位置までカーソルを移動しpか
Pでペーストすればいいことになります.
10
3-2-6 特殊なコマンド
u
最後に実行された操作を取り消す
U
カーソルのある行に対して行ったすべての変更を取り消す
.
直前に実行したコマンドを繰り返して実行する
:set nu
行番号を表示する
:set nonu
行番号の表示を止める
3-3 ファイル操作とviの終了
:r
file name カーソル行の下に file name のファイルを読み込む
:w
編集中のファイルを保存する
:q
viの終了
:q!
セーブせずに強制終了
ZZ
変更されていたらファイルを保存して終了
:w
file name とすれば file name で指定した名前で保存できる.
:wq とすればセーブして終了できる.
:q! は間違った修正をしてしまって,編集を最初からやり直したいときに使うといい.
viエディタはプログラムサイズが小さく,動作も速いエディタであり,どのような
UNIX システムにも必ず添付されています.
ここでは基本的なコマンドを幾つかあげただけですが,いずれのコマンドも前に繰り
返し数を書くことで複数文字,複数行に対する操作ができるし,複数のコマンドを組み
合わせて使うことで複雑な操作を1回の命令で行わせることもできます.
例えばコマンドモードで「3yyp」とタイプすると,カーソル行以下の3行が記憶
され,続けてその下にその3行がペーストされる(3行のコピー貼り付け).
この直後に「.」を入力すると,直前の操作が繰り返されるので,さらに3行のコピー
が行われます.
viエディタ自体の解説本は少ないですが,ほとんどの「UNIX 解説本」にはviエ
ディタの章がついているので,これらを参考にして下さい8.
8
船元 奨 著 ”UNIXハンドブック”(ナツメ社)は特に詳しい
11
3-4 ng エディタのコマンドリファレンス
viエディタ以外に広く使われているエディタとしては Emacs9があ
ります.これは UNIX に標準で添付されているものではありませんが,
プログラムの追加でメールやニュースが読めたり,エディタからコンパ
イラを呼び出したりと機能の強化ができる点で人気があります.Emacs
を日本語化したものがngエディタ,多国語対応にしたものが Mule で
す10.本校ではngエディタを使うことが出来るようになっています.
ngエディタはviエディタと違って常に文字入力モードになってい
ます.一文字削除は DEL(Delete)キーや BS(Back Space)キーを押すだ
けで出来ますが,それ以外の編集操作のためにはちょっと複雑なキーの
組み合わせを覚える必要があります.ここではそのキーの組み合わせの
一覧を示します.動作の説明などはviエディタのものを参考にして下
さい.
なお CTRL+は CTRL キーを押しながら+以後に書いたキーを押すことを
意味します.ESC+も同様です.CTRL+x CTRL+c は CTRL+x を押した直後
に続けて CTRL+c を押すことを表しています.
3-4-1 ng 起動,カーソル移動と文字の検索コマンド
命令
9
動作
ng ファイル名
ngエディタを起動し,指定したファイルを編集する
←または CTRL+b
1文字左に移動
→または CTRL+n
1文字右へ移動
↑または CTRL+p
1行上へ移動
↓または CTRL+n
1行下へ移動
ESC+<
ファイルの先頭にジャンプ
ESC+>
ファイルの最後にジャンプ
ESC+x goto-line
この命令の後でジャンプしたい行の番号を打ち込む
CTRL+s 文字列
指定した文字列の先頭の文字へ移動(順方向検索)
CTRL+r 文字列
指定した文字列の先頭の文字へ移動(逆方向検索)
CTRL+s
順方向に再検索
CTRL+r
逆方向に再検索
R.M.Stallman を中心とした GNU プロジェクトが作成配布しているフリーソフトです.
10
ng エディタは吉田茂樹さんが,Mule は K.Handa らが Emacs を拡張して書いたものです.
12
ESC+% 文字列 1 文字列 2
確認しながら文字列 1 を文字列 2 に置換する
ESC+x replace-string 文字列 1 文字列 2 確認なしで文字列 1 を文字列 2 に置換する
注意:文末に向かうのが順方向,先頭に向かうのが逆方向
3-4-2 範囲(リージョン)指定と削除
CTRL+スペース
カーソル位置にマークをつける.その後カーソルを移動させて,
または CTRL+@
このマークとカーソルの間が指定範囲となる
CTRL+x CTRL+x
カーソルの場所とマークの場所を入れ替える
CTRL+w
マークとカーソルの間で指定した範囲を記憶して削除
ESC+w
指定した範囲を削除せず記憶だけする
CTRL+y
記憶してあった部分をカーソル位置に貼り付ける
CTRL+k
カーソルのある位置から右側すべてを削除
3-4-3 ファイル操作とngの終了
CTRL+x CTRL+f
ファイルを開く
CTRL+x CTRL+s
編集中の文章をファイルに上書きセーブ
CTRL+x CTRL+w
編集中の文章を新しい名前でセーブ
CTRL+x CTRL+c
ngの終了
3-4-4 特別な命令
CTRL+g
わけが分からなくなったときにコマンドを中止する
CTRL+_
一回前の編集操作を取り消す
13
第4章 FORTRAN のコンパイルと実行
4-1 コンパイラ:f77とg77
UNIX 上の FORTRAN コンパイラは製品版の「f77」とフリーソフトウエアの
「g77」です.使い方はf77,g77ともに同じです.example.f をf77でコン
パイルする場合を例にとって説明します.
f77
example.f
と入力することで,example.f はコンパイルされ,続いてリンクされて実行形ファイ
ル”a.out”が作られます.つまり「f77」はコンパイラとローダの両方を兼ねて
いることになります.(一般には,このようなものも単にコンパイラと呼んでいます)
オプション
機能
指定なし
コンパイル,リンクを行って実行形 a.out を生成する
−o
コンパイルとリンクを行い,自分で指定した名前の実行形を生成する
−c
ソースファイルをコンパイルしてオブジェクトファイルのみ生成する
「f77」で生成される実行形ファイル(ロード・モジュール)の名前は,標準では
a.out 11になります.これはプログラムの動作チェックにはいいですが,後日見たと
きにどのソースファイルをコンパイルしたものか分からなくなるし,複数の実行形ファ
イルを利用したいときなどには不都合です.
こういった時に便利なのが「−o」(オーオプション)です.
f77
−o
実行形ファイル名
ソースファイル名
とすることで任意の名前の実効形ファイルを作ることができます.だからといってでた
らめな名前を付けていては話になりません.ソースファイルが example.f であれば実効
形ファイル名は example とか example.exe12 とかにしておくのが無難でしょう.
大きなプログラムのコンパイルの時や,よく使う外部関数やサブルーチンなどをオブ
11
UNIXコマンドのlsで見たときに実行形ファイル名の後には*が付きます.*は実行形ファイルであることを
示しているだけでファイル名に*が含まれているわけではありません.
12
exeは execute : 実行するの略.実効形ファイルを表す拡張子としてMS-DOSなどで良く使われています
14
ジェクトモジュールにして保管して再利用できるようにしておくと便利です.
つまりプログラミングの時よく使う部分をコンパイルしてキープしておけば,新しい
プログラムを作るときには必要な追加部分だけを書いてコンパイルして,これとキープ
しておいた部品とをリンクさせれば効率的なプログラムの開発ができるようになります.
コンパイルだけをさせるためのオプションが「−c」(cオプション)で
f77
−c
example.f
とすると,その結果”example.o”というオブジェクトファイルができます.拡
張子のoはもちろん object のoでです.
複数のオブジェクトファイルをリンクして一つの実効形ファイルを作るには,例えば
f77
−o
ex.exe
ex1.o
ex2.o
ex3.o
とします.上の例では,既に作成している3つのオブジェクトファイル(ex1.o∼
3.o)を結合してex.exeという名前の実効形ファイルが作られます.
余談:UNIXには「f77」以外にもC言語用のコンパイラ「cc」などがあります.
使い方やオプションは「f77」と同じになっています.
4-2 プログラムの実行とリダイレクション機能の利用
4-2-1 プログラムの実行
実効形ファイルになったプログラムを実行させるためには,その実効形ファイル名を
入力してやるだけです.簡単でしょ (^^)
あるいは「実効ファイル名&」と入力することでバックグラウンドで動作させる事も
できます.(これをやるとプログラムに対してキーボードから値を入力する事ができな
くなるので,やめておいた方がいいでしょう)
15
4-2-2 リダイレクション機能の活用
以上でコンパイル関係の説明を終わりますが,これで終わりでは締まらないので
ちょっとだけ高度な使い方をお教えします.それはリダイレクション機能の利用です.
UNIX の標準入力装置はキーボードで,標準出力装置はディスプレイになっています.
だから FORTRAN 言語で READ(5,*),もしくは READ(*,*) を実行するとキーボー
ドから値の読み込みを行い,WRITE 文ならディスプレイへの出力となります.
リダイレクションは標準入出力を他のディバイスに切り替える働きを持っています
(ファイルも一種のディバイスとして取り扱われます).
<
標準入力リダイレクション
<
標準出力リダイレクション
<<
追加入力
>>
追加出力
例えばex1.exeがキーボードから値を入力して計算結果をディスプレイに表示す
るようなプログラムであるときには
ex1.exe
<
file1
とやるとキーボードからの入力ではなく file1 の内容がex1.exeへの入力となり,
その計算結果だけがディスプレイに表示されます.
ex1.exe
>
file2
とやるとex1.exeの出力結果はディスプレイでなく file2 に書き込まれるように
なります.
ex1.exe
<
file1
>
file2
これももう分かりますね.file1 を入力として結果の出力は file2 に残るようになりま
す.
「>」や「<」はファイルへの上書き入出力なので,実行するたびに以前の内容が消され
てしまいます.これでは不都合な場合には「>>」,「<<」を使えば追加入出力ができる
ので便利です.自分でいろいろ試してみましょう.
16
第5章 電子ニュースとメールの利用
電子メールの発送,読み取りを行う UNIX コマンドとして mail が用意されています.
本校の学内ネットワークでは電子ニュースも読むことができるようになっています.電
子ニュースを読み書きするためのアプリケーションとしては,mnews13 が使えるように
なっています.この mnews は電子ニュースだけではなく,電子メールの読み書きも可
能です.ここでは mnews を使ったニュース・メールの読み書きについて説明します.
通常の mail コマンドについては参考文献などを参照して下さい.
5-1 電子ニュースの読み方
UNIX プロンプトで「mn」とやると,mnews が起動します.起動直後には次のよう
な画面に切り替わります.
Mini News Reader Ver 1.21PL1
Copyright (C) By A.Takuma [NNTP][MTAP][MSPL]
ニュースカテゴリ:
位置:All[E:M:S]
最大
未読 モード ニュースカテゴリ/ニュースグループ名
123466
702 [Y]
control
3 [-]
csi
CSIの電子ニュース
53429 [-]
fj
日本の電子ニュース
6203 [-]
gnu
GNUの電子ニュース
18029
626 [Y]
junk
2 [-]
kochi-ct 高知高専キャンパス情報
0 [-]
kousen 全国高専の電子ニュース
0 [-]
shikoku 四国の電子ニュース
[+]
MAIL
?:ヘルプ j,^N:次行 k,^P:前行 SPACE,i:選択 l:表示モード切替 q:復帰 Q:終了
図 2 mnews 起動画面
何行かの表示がありますが,右端に表示されている「csi CSI の電子ニュース」など
と書かれているのが電子ニュースのグループ名です.キーボードの上下矢印キーでグ
ループを移動することが出来ます.読みたいグループが選択できたらスペースキーを押
して決定をします.試しに「kouchi-ct 高知高専キャンパス情報」を選択して決定して
下さい.
13
mnews は,A.Takuma さん作のフリーソフトウエア(無償で配布されているソフトウエア)です
17
Mini News Reader Ver 1.21PL1
Copyright (C) By A.Takuma [NNTP][MTAP][MSPL]
ニュースカテゴリ:kochi-ct 高知高専キャンパス情報
位置:All[E:M:S]
最大
未読 モード ニュースカテゴリ/ニュースグループ名
2
0 [Y]
kochi-ct.announce 学内LAN運営グループよりのアナウンス
0
0 [Y]
kochi-ct.center 情報処理センターよりのお知らせ
124
0 [Y]
kochi-ct.general 高知高専・学内一般電子掲示板
48
0 [Y]
kochi-ct.info
学内LANの便利メモ
60
0 [Y]
kochi-ct.mac
Mac広場
27
0 [Y]
kochi-ct.ne3
情報端末の情報交換
65
0 [Y]
kochi-ct.network ネットワークQ&A
7
0 [Y]
kochi-ct.ob
卒業生からのメッセージ
68
0 [Y]
kochi-ct.pc98
98広場
69
0 [Y]
kochi-ct.student 学生の憩いの広場
1
0 [Y]
kochi-ct.test
投稿練習道場
51
2 [Y]
kochi-ct.tex
LATEXの広場
159
0 [Y]
kochi-ct.win
Windows広場
22
0 [Y]
kochi-ct.ws
WS関係の情報交換
?:ヘルプ j,^N:次行 k,^P:前行 SPACE,i:選択 l:表示モード切替 q:復帰 Q:終了
図 3 kochi-ct グループ選択画面
またニュースカテゴリー/ニュースグループがいくつか出てきました.ここで「kochict.network ネットワークQ&A」を選択決定すると図 4のようになります.今度はグ
ループではなく記事そのものが一覧となって表示されます.ここでスペースキーを押せ
ば,いまカーソルがある記事の内容を読むことが出来ます.
Mini News Reader Ver 1.21PL1
Copyright (C) By A.Takuma [NNTP][MTAP][MSPL]
ニュースグループ:kochi-ct.network ネットワークQ&A
位置:Bot[E:M:S]
マーク 番号 日付 行数 差出人
サブジェクト名 [NEW MAIL] (1-65)
R
50 04/03
10 寺崎彰洋
about kumn tumn
R
51 04/04
29 今井一雅
│ about kumn tumn
R
52 04/04
32 寺崎彰洋
│ about kumn tumn
R
54 04/09
25 寺崎彰洋
Security on CGI (was Re: [Warning]nobody)
R
55 09/16
13 [email protected] Netscape 3.03[ja]
R
56 09/16
14 [email protected] Netscape 3.03[ja] Japan Site
R
57 09/16
21 今井一雅
│ Netscape 3.03[ja] Japan Site
R
58 09/16
16 今井一雅
│ Netscape 3.03[ja] Japan Site
R
59 09/18
31 [email protected] Netscape 3.03[English] for Win3.1
R
60 10/09
19 [email protected] Netscape Communicator 4.03[ja]
R
61 10/22
44 [email protected] Netscape Communicator 4.03[ja] at some Japan
R
62 10/23
28 今井一雅
│ Netscape Communicator 4.03[ja] at some J
R
64 11/23
14 山本 健児
linux の日本語 106 キーボード設定について
R
65 11/25
45 芝 治也
Re: linux の日本語 106
?:ヘルプ j,^N:次行 k,^P:前行 SPACE,i,.:参照 l:表示モード切替 o,q:復帰 Q:終了
図 4 kochi-ct.network の中身
18
記事の内容が一画面に表示しきれなかった場合には自動で一画面ずつに区切って表示
してくれます.この場合の画面操作は more コマンドを参照して下さい.記事を読むのを
途中で止めたり,前の画面に戻りたいときには「q」を押します.図 2の起動画面の状
態でqを押すと mnews 自体が終了します.
表 1 mnews のニュース閲覧モードの命令
上下矢印キー
グループや記事の選択変更
スペース
カーソルのあるグループや記事の選択決定
q
記事閲覧の中止,一つ前の画面に戻る
a
新たに記事を書いて投稿する
F
相手の記事を引用して返信記事(フォロー記事)を投稿する
電子ニュースは,掲示板やTV放送のように誰でも見ることのできる公のものです.
要領を得ない記事を出したり,誰かを誹謗中傷するような記事を投稿してはいけません.
初めて記事を投稿する際には,担当教官のチェックと指導を受けるようにして下さい.
ここでは煩雑になるので省略しますが,配布範囲(distribution)を問い掛けてくる以外は
電子メールの出し方と同じです.
ニュースを投稿する前には,すでに投稿されている記事をよく読んで,どのような内
容の記事をどこに投稿すればいいのか,どのような文章の書き方が良いのか調べてから
記事を投稿するのが良いでしょう.
5-2 電子メールの読み方
図 2を見てみると,ニュースグループの最後に「MAIL」と書かれたグループがあるこ
とに気が付きます.これは電子メールを取り込んで読むための特別なグループです.
MAIL グループを選択してスペースキーを押してみましょう.
すると次のようにメール選択画面になります.一見ニュース閲覧画面のようですが,
二行めに「メールボックス:」という表示があるので区別することが出来ます.まだ読
んでいない新着のメールがある場合には三行目の「サプジェクト名」の後ろの[ ]の中に
NEW MAIL と表示されるのでメールが届いていることが分かります.
Mini News Reader Ver 1.21PL1
Copyright (C) By A.Takuma [NNTP][MTAP][MSPL]
メールボックス:/home/shiba/mbox
位置:Bot[E:M:-]
マーク 番号 日付 行数 差出人
サブジェクト名 [NEW MAIL] (1-416)
R
411 03/11
26 [email protected] newgroup fj.net.ftp.archie y created fj-comm
R
412 03/11
26 [email protected] newgroup fj.net.www.servers y created fj-com
R
413 03/11 151 [email protected] Daily Usenet report
R
414 03/15
22 [email protected] rmgroup fj.net.infosystems.www.servers by fj
R
415 03/15
20 [email protected] rmgroup fj.net.infosystems.dns by fj-committ
19
R
416 03/15
22 [email protected] rmgroup fj.net.infosystems.announce by fj-co
図 5 MAIL 選択画面
ここで新着メールを閲覧のために取り込むには「I」14 を入力します.すると次の画
面のようにメールが取り込まれて一覧に加わります.この状態で読みたいメールを矢印
キーで選択してスペースキーを押せば内容を読むことが出来ます.
Mini News Reader Ver 1.21PL1
Copyright (C) By A.Takuma [NNTP][MTAP][MSPL]
メールボックス:/home/shiba/mbox
位置:Bot[E:M:-]
マーク 番号 日付 行数 差出人
サブジェクト名 [
] (1-417)
R
411 03/11
26 [email protected] newgroup fj.net.ftp.archie y created fj-comm
R
412 03/11
26 [email protected] newgroup fj.net.www.servers y created fj-com
R
413 03/11 151 [email protected] Daily Usenet report
R
414 03/15
22 [email protected] rmgroup fj.net.infosystems.www.servers by fj
R
415 03/15
20 [email protected] rmgroup fj.net.infosystems.dns by fj-committ
R
416 03/15
22 [email protected] rmgroup fj.net.infosystems.announce by fj-co
417 04/12
7 芝 治也
test from shiba
図 6 新着メールを取り込んだところ
メールの中身を覗くと次のような構成になっています.閲覧の仕方などは電子ニュー
スの場合と同じ要領です.
Date: Sun, 12 Apr 1998 17:01:20 JST ← メールが届いた日付
To: shiba
← 誰あてに来たメールか (1)
Cc: [email protected] ← 同時にこのメールが届いている人の名前 (2)
Subject: test from shiba
← メールのサブジェクト(タイトル)(3)
From: [email protected] (Haruya Shiba) ← 誰が送ってきたのか (4)
This is test mail.
← メールの内容 (5)
これはテストメールです
===============================================================
Haruya Shiba
Kochi National College of Technology
E-mail [email protected]
Tel +888-64-5546 : FAX +888-64-5541
←
←
←
←
表 2 mnews のメール閲覧モードの命令
14
上下矢印キー
グループや記事の選択変更
スペース
カーソルのあるグループやメール閲覧の決定
q
記事閲覧の中止,一つ前の画面に戻る
m
新たにメールを書いて発送する
R
相手のメールを引用して返信メールを発送する
小文字のiではなく,大文字のIなので間違えないように.
20
これら四行は
誰が書いたか
を表すための
署名 (6)
表 2はメール閲覧モードで使える命令ですが,これは表 1のニュース閲覧モードのも
のとよく似ています.ただしメールを自分で書いて発送するときの命令が「m」「R」
となっているので注意して下さい.
5-3 電子メールの書き方と送り方
電子メールを送るには mnews を起動した後で「m」を入力します.すると
主宛先(to),コピー宛先(cc),題名(subject)を次々と聞いてきます.これらは相手が
閲覧したときには,前節の閲覧例の(1)∼(3)のように表示されることになります.
コピー宛先と題名は必要なければ何も書かずにリターンキーを押せばいいですが,主
宛先は必ず書かなければいけません.これを書かずにリターンキーを押すとメール発送
作業のキャンセルになります.
主宛先などを記入しおわると自動的にエディタが呼び出されて,内容を記述する画面
に切り替わります.(下の例はviエディタを使っている場合です)
To: shiba
Cc:
Bcc:
Subject: test from shiba
--text follows this line--
画面表示は使っているエディタの種類によって多少異なりますが,先頭の数行に宛先
や題名などが表示されます.宛先などを書き間違えた場合にはここで訂正して下さい.
その下に--text follows this line--と表示されています.この行より下にメールの本文
を書きますが,この行自体を消したり,書き替えたりしてはいけません.
本文を書き終えたら内容を保存する方法でエディタを終了して下さい.すると前節の
例の(6)の署名(signature)を追加 15 するかどうか問い掛けくるので, 「y」(yes)か
「n」(no)で答えます.そしてメール全文の確認をしてスペースを押すと
記事を送信してよろしいですか? [y/n/e(dit)/m(ime)]:
と聞いてくるので「y」「n」もしくは「e」(編集しなおし)のいずれかを入力します.
yと答えるとメールが発送されます.
例によって詳しいことは参考文献や「man mnews」で調べたりして,各自で学習してく
ださい.しかしここに書いてあることで,最低限のことはできます.
さあ電子ニュースと電子メールの世界に踏み込んでみてください.
15
ホームディレクトリに .signature という名前のファイルを作っておけば,その内容が取り込まれます.
21
特別付録 困った時にみるページ
UNIX のコマンドを実行した結果異常が生じて暴走したとき,あるいは途中で実行を
打ち切りたいときには,コントロールキー(CTRL)を押しながらcを同時に押す
(これを CTRL+cと表す)ことでコマンドの中断が行えることは以前にも書きました.
またこれ以外にも CTRL+d,CTRL+¥を入力することでもコマンドの中断ができました.
でもこの方法が有効なのは UNIX のシステムが正常に動作しているときだけです.端
末そのものが暴走したり UNIX プロンプトが応答なくなったときには,このような方法
以外で実行中のプロセスの終了や,logout をする必要があります.
それには UNIX の世界に入る必要があることは言うまでもありません.まず暴走して
いる端末以外から login してください.(Windows 上の仮想 vtn 端末などを使っている
場合には,もう一つ仮想 vtn ウインドウを開いてください.)そして UNIX プロンプト
で「ps」を実行してください.これは現在あなたのユーザIDで実行中のプログラム
(プロセス)を表示してくれるコマンドです.
mercury:shiba[1]: ps
PID TT STAT
TIME COMMAND
2513 p0 S
0:00 -csh (csh)
2532 p0 R
0:00 ps
2523 p1 S
0:00 -csh (csh)
ここで
PID
プロセス番号
TT
端末番号
STAT
そのプロセスの状態
TIME
動作時間
COMMAND
プロセスの名前
になっています.COMMAND の“-csh(csh)”は,UNIX のプロンプトのこととでも思ってい
てください.つまりあなたのIDで2つの UNIX のシステムが作動していることになっ
ています.そして TT の欄の p0,p1 というのがシステムが動いている端末の端末番号を
表しています.再び COMMAND の欄に注目してください.“ps”というのがありますね,そ
してそれが動いている端末は“p0”であることが分かります.つまり今まともに動作して
いてあなたが利用している端末は p0 であり,暴走してしまった端末は p1 であることが
分かったわけです.
では次に暴走しているプロセスを殺す方法について述べます.その為のコマンドはず
ばり「kill -9 プロセス番号」です.-9 は強制終了のためのオプションで,プロセス番
号は「ps」で調べた PID 番号をそのまま打ち込めばいいわけです.
22
上の例では,暴走しているのは TT p1 であり,その PID は 2523 ですので「kill -9
2523」とやれば暴走しているプロセス(UNIX のプロンプト)を終了させることができ
ます.
TT p1 で他のプロセス(例えば vi エディタ)を実行していて暴走した場合には,-csh
よりもそちらのプロセスの方が原因ですから暴走した vi エディタの PID 番号を使って
kill コマンドを実行してみてください.うまくいけば暴走していた端末の画面に UNIX
プロンプトが返ってきて,p1 端末で続けて作業をすることができます.
また特にたちの悪いケースでは「ps」だけでは PID が分からない場合があります.そ
んな時には「ps -aux │ grep 君のユーザ ID」を実行してみてください.│はパイプと呼
ばれるもので NEC の PC-98 のキーボードではリターンキーの上の¥キーを shift ととも
に押すと入力することができます.-aux はそのWSで実行中のすべてのプロセスを詳し
く表示するためのオプションで,その情報量たるや膨大なものになります.「grep ユー
ザ ID」は,そのなかから自分のユーザ ID を含んだ行のみを抜き出す処理をやってくれ
ます.(それでも量が多くて流れてしまうときにはさらに │ more を付け加えてくださ
い)これでほとんどの場合に対処することができるはずです.
これでも暴走しているプロセスが分からないときには,管理者(スーパーユーザ)に
相談してみてください.
後書き
以上で本稿を終了しますが,これらはUNIX,viエディタの機能のホンの一部分
でありそれらの素晴らしさを十分説明できたとは思えません.より詳しく学びたいと
思っている学生諸君は参考書など(本稿の中でも幾つか挙げたが)を見ながら学習して
もらいたいと思います.諸君の自己研鑚を期待しています.
改訂第 3 版によせて
本稿は平成6年から書き始めたものを少しずつ書き改めて,今のスタイルになったも
のです.この版からはngエディタのコマンドリファレンスも追加しました.また従来
の UCB mail コマンドを使ったメールのやり取りの記述から,mnews を使ったニュースや
メールの閲覧方法に変更しました.文章中の誤りや,お気づきの点,改善のアイデアな
どご指摘いいただければ幸いです.
平成10年4月13日 筆者
23