JFP ユーザーズガイド

第 5 章 国際化 SunOS コマンドの利用

SunOS 上の多くのコマンドは、複数バイト文字データを適切に処理できるよう国際化されています。この章では、代表的なコマンドをいくつか取り上げ、日本語環境での利用方法について説明します。

この章で説明されていない事項およびコマンドについては、それぞれのコマンドのマニュアルページなどを参照してください。複数バイト言語を対象に国際化されているコマンドのマニュアルページでは、一般に、ENVIRONMENT (環境) の項に LC_* 環境変数に応じた動作の変化が記述されています。

vi エディタ

vi は SunOS 上の標準的なテキストエディタです。ウィンドウ環境への依存性がなく、広範囲のファイルタイプに対応しているため、さまざまな端末で多目的に利用できます。

この節では、vi を例として、SunOS で国際化されているコマンドの日本語環境での使い方を説明します。vi の機能全般については、『OpenWindows ユーザーズガイド (上級編)』や vi(1) のマニュアルページを参照してください。また、実際の日本語入力方法については、『ATOK12 ユーザーズガイド』、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、『cs00 ユーザーズガイド』を参照してください。


注 -

この項の説明で、 "「xxx」を入力してください" という表現は、xxx が日本語の場合は日本語を入力し、無変換の状態に戻すまでを指します。


vi の起動

多くの SunOS コマンド同様、vi は日本語のファイル名をサポートします。例として、「コロンブスのジパング」という名前のファイルを vi で編集してみましょう。


sun% vi コロンブスのジパング

「コロンブスのジパング」というファイルがすでにあれば、vi でそのファイルを開くことができます。この例ではファイルは存在しないものとします。

vi の編集画面が現われます。

_                                                                    
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
"コロンブスのジパング" [新規ファイル]                                     


注 -

以降、vi の画面での下線マーク「 _ 」は、カーソルの位置を表します。


多くの SunOS コマンドと同様に、vi では、"[新規ファイル]" のようにメッセージを日本語で表示できます。このメッセージ自体は、JFP が提供しています。JFP をインストールしたシステムでメッセージが日本語で表示されないときは、LC_MESSAGES のロケールカテゴリが、環境変数 LANG、LC_MESSAGES または LC_ALL によって日本語ロケールに設定されていない可能性があります。ロケールを正しく設定し直してください。詳細は、第 3 章「日本語対応 SunOS のユーザー環境設定」「環境変数によるロケールの設定」を参照してください。

vi に慣れるまでは、動作モードを表示する showmode という設定が役立ちます。showmode を設定するには、コマンドモードで次のように「:set showmode」と入力します。


_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode           

これで、その時々の動作モードが画面最下部 (ステータス行) の右側に表示されるようになります。たとえば、ここで i キーを入力すると、vi は挿入 (insert) モードに入ります。このとき、ステータス行には次のように表示されます。


_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode                                           挿入モード

テキストの挿入 (文字幅の処理、行末処理)

JFP の提供する日本語入力機能などを利用して日本語のテキストを入力していくと、 vi はこれを編集画面に表示します。端末環境では、一般に、日本語の 1 文字は ASCII の 2 文字 (2 カラム) 分の表示幅を持ちます。1 行が画面の幅を超えた場合は、画面の最後のカラムに日本語文字が入るかどうかによって、行の折り返し処理が行われます。


1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン‾
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                          挿入モード  

上の例では、画面 2 行目の最後のカラムに「ド」の文字がかかりますが、行内には収まりません。この ような場合、2 行目の行末の 1 カラムはスキップされ、「ド」の文字が次の行に折り返されます。2 行目の行末の「‾」は、この処理を示しています。環境変数 MC_FILLER を使って、「‾」を任意の ASCII 文字に変更することもできます。


注 -

本文では、現在のカーソル位置を、全角文字の上にある場合は全角アンダースコア (_)、半角文字の上にある場合は半角アンダースコア (_) で表示していますが、これは使用する端末によって変わります。


たとえば、次のように設定します。


sun% setenv MC_FILLER ' '

この設定をしたあと、vi を起動して同じテキストを入力すると、スキップを示す文字がスペースに変わります。


1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                          挿入モード  

1 文字の置換、削除、大文字・小文字変換

多くの SunOS コマンドと同様に vi コマンドは 1 文字単位の処理を複数バイト文字にも適用できるように国際化されています。置き換え、削除、大文字・小文字変換を例にとって見てみましょう。

まず、「3箇月後」の「3」(ASCII) をコードセット 1 の「3」に置き換えてみます。Esc キーを入力してコマンドモードに移り、カーソルキーを使ってカーソルを「3」の位置に合わせます。次に r キーを入力すると、vi は 1 文字を置き換えるモードになります。

Graphic

ここで「3」を入力すると、「3」はコードセット 1 の「3」に置き換えられ、vi はコマンドモードに戻ります。

Graphic

次に「クリストファー」の最後の 1 文字「ー」を削除してみます。カーソルを削除したい「ー」に移動し x キーを入力すると、「ー」の 1 文字が削除され、画面は次のようになります。

さらに 2 行目の文字列、「ZIPANGU」の「IPANGU」を小文字に変換してみます。カーソルを「ZIPANGU」の「I」に移動して「6‾」と入力します。これにより、1 文字を大文字・小文字変換して次の文字に移動する操作が 6 回繰り返され、画面は次のように変わります (‾ キーを 6 回入力しても同じです)。

Graphic

単語単位の日本語処理

SunOS 上のいくつかのコマンドでは、単語間の区切りとして空白を使用しない言語用に拡張された、単語の識別処理がサポートされています。

vi では、コマンドモードで w (word) キーを入力することにより、カーソルが日本語の単語識別用文字分類に基づいて次の単語の先頭に移動します。同様に、b (back) キーは前にある単語の先頭に、e (end) キーは現在カーソルのある単語の末尾にカーソルを移動します。

「スペイン女王」の「ス」にカーソルがある状態で w キーを 5 回入力すると、カーソルは日本語の単語識別用の文字分類に基づいて「女王」、「イザベル」、「の」、「援助」、「を」の単語の先頭に次々に移動します。

さらに b キーを 3 回入力すると、カーソルが 3 単語分戻り、「イザベル」の先頭に移動します。

Graphic

ここで、カーソル以降の 1 単語を書き換える cw コマンドを実行してみましょう。「Zipangu」の「Z」にカーソルを移動して、cw と入力すると画面は次のようになり、vi は「Zipangu」に置き換わる単語の入力を待ちます。

Graphic

「ジパング」と入力して Esc キーを入力すると、「Zipangu」が「ジパング」に置き換えられます。

同様に、このような単位の単語を削除することもできます。カーソルキーを使ってカーソルを「イザベル」の「イ」に移動し dw と入力すると、カーソル位置から現在の単語の最後の「ル」までが削除されます。

Graphic

改行マージンと連結コマンド (行の分割と連結)

入力テキストの改行は、Return キーを入力することによって任意に行えますが、viset コマンドと wm オプションを使用すると、行の長さを自動的にコントロールできます。さらに、日本語環境では、原則として日本語文字 1 文字が改行の単位とみなされます。たとえば、次の例では画面の幅が ASCII の 80 カラム分なので、コマンドモードで「:set wm=58」を入力することにより、画面右側に 58 カラムのマージン (余白) が確保され、行の長さは 80-58=22 カラム以下になるようにコントロールされます。

Graphic

コマンドモードで o (open) キーを入力してオープンモードに移り、入力を次のように続けます。

「コロンブスは、その後もジパングをめざし、数回の航海でキューバ島やイスパニオラ島を発見した。しかし、最後までジパングを見つけることはできなかった。」

Return キーを入力せずに続けて入力しても、テキストは自動的に次のように改行されます。

ここで、「スパニオラ島を発見し」の行が次の行より 1 文字分短く改行されるのは、テキストを清書するときと同様に禁則処理が働いているためです。

次に行を連結してみましょう。Esc キーを入力してコマンドモードに移り、「コロンブス...」の行にカーソルを移動します。

Graphic

ここで J (Shift-j) キーを入力すると、現在の「コロンブス...」の行に次の「ジパング...」の行が連結されます。

Graphic

このように日本語文字の行の連結の場合には、英語の行の連結の場合とは違い、スペースが挿入されず、改行の場合と同様に自然な日本語処理が行えます。日本語固有のこれらの単語処理は、JFP の提供する各国語化によって実現されています。 [国際化された単語処理になじみのない既存の vi のユーザーは、これらの機能にとまどいを覚えるかも知れません。そのような場合には、環境変数 MB_CONSERVATIVE_EDIT を設定してください。テキストの清書に準じた日本語単語処理は vi に適用されなくなり、vi は日本語に対しても英語と同様の動作をするようになります。]

日本語文字を含む文字列の検索と置換

いくつかの SunOS コマンドと同様、vi でも日本語文字を含む文字列パターンの処理がサポートされます。コマンドモードで「/」キーを入力すると画面の最下行に「/」が表われ、検索する文字列を待つ状態になります。ここで、検索する文字列として「コロンブス」と入力してみましょう。

Graphic

Return キーを入力すると、カーソルは先頭行の「コロンブス」の先頭に移動します。

n (next) キーを入力すると、カーソルは画面 2 段落目の最初の行の「コロンブス」の先頭に移動します。

次に、1 行目の ASCII の英数字を含む「1492年」の文字列をコードセット 1 の「1492年」に変更してみます。ここでは、正規表現を使って「1492年」を「...2 年」と指定することにします。

:%s/...2年/1492年/g」と入力します。

Graphic

Return キーを入力すると文字列が置き換えられ、画面は次のようになります。

Graphic

ファイルの保存と vi の終了

ファイルの編集後、コマンドモードで (動作モード表示は消えます)、: (コロン) に続けて w (write) キーを入力します。入力した「:w」の文字列は画面最下行 (ステータス行) に表示されます。ここで Return キーを入力すると、ファイル名、行数、バイト数が表示され、ファイルが保存されます。

Graphic

ファイルを変更していない状態またはファイルの保存後に vi を終了するときは、コマンドモードで : (コロン) キーのあとに q (quit) キーを入力します。ファイルの保存と同時に vi を終了するときは、wq を入力します。変更したファイルを保存せずに q キーを入力すると、次のような警告が出されます。

1. この行は反転表示されます。

警告を無視して vi を終了する場合は、q! または quit! と入力します。

オンラインマニュアルの参照

SunOS 上では、国際化された man コマンドと nroff およびその関連コマンドにより、日本語のオンラインマニュアルページを参照できます [ただし、troff の国際化は行われていないため、man コマンドの -t オプションを日本語マニュアルページの troff 出力に使うことはできません。 ] 。日本語のオンラインマニュアルページとそのマクロパッケージは、JFP によって提供されます。

マニュアルページの参照

環境変数 LC_MESSAGES が日本語ロケールに設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されていれば、man コマンドで指定されたマニュアルページが日本語で存在している限り、日本語のマニュアルページが表示されます。例として、dumpcs(1) のマニュアルページを参照してみましょう。次のように入力します。


sun% man dumpcs
マニュアルを清書中です。しばらくお待ちください... 

しばらくすると dumpcs(1) の日本語マニュアルページが表示されます。


マニュアルを清書中です。しばらくお待ちください... 終了

dumpcs(1)               ユーザコマンド                dumpcs(1)          

【名前】
     dumpcs - 現在のロケールのコードセット一覧表を表示

【形式】
     dumpcs [ -0123vw ]

【機能説明】
     dumpcs は、ユーザの現在のロケールに対応するコードセットの印
--継続--(9%)

一時的に英文のマニュアルページを参照したい場合には、env(1) コマンドを使い、「env LANG=C man dumpcs」と入力します。


sun% env LANG=C man dumpcs
Reformatting page.  Wait...

Reformatting page.  Wait... done

dumpcs(1)                USER COMMANDS                  dumpcs(1)     

NAME
     dumpcs  - show the codeset table for the current locale

SYNOPSIS
     dumpcs [ -0123vw ]

DESCRIPTION
     dumpcs shows a list of printable characters for  the  user's
--More--(9%)

和文と英文のマニュアルページを両方とも頻繁に参照する場合は、"env LANG=C man" の部分を C シェルの別名 (alias) として登録しておくとよいでしょう。

清書済みオンラインマニュアルと windex の作成

オンラインマニュアルは、システムの出荷時には個々のマニュアルページにより、sgml(5) の形式、または nroff(1) のソース形式で提供されます。catman(1M)コマンドによって、これらのマニュアルページをあらかじめ清書しておくと、man(1M) コマンドによる表示の際の清書作業にかかる時間を節約できます。ただし、この処理を行うとディスクスペースの消費量が増えることに注意してください。

また、catman コマンドは、whatis(1) および apropos(1) コマンドによって検索されるシステム機能の要約情報のデータベースファイル windex を作成します。-n オプションを指定すると、このデータベースは作成されません。また -w オプションを使うと、このデータベースの作成のみが行われます。catman コマンドは、常に英語のマニュアルページを清書します。それに加え、ユーザーが現在使用しているロケール用のマニュアルページがある場合は、そのロケールのマニュアルページも清書します。たとえば、オンラインマニュアルページのルートディレクトリが /usr/share/man であり、 catman を実行するユーザーの現在のロケールが ja の場合には、次のマニュアルページがすべて清書されます。

/usr/share/man/ja/sman<n>/* (ja ロケール用の SGML マニュアルページ)
/usr/share/man/ja/man<n>/*  (ja ロケール用の nroff マニュアルページ)
/usr/share/man/sman<n>/*    (英語の SGML マニュアルページ)
/usr/share/man/man<n>/*     (英語の nroff/troff マニュアルページ)

whatis による機能要約の参照

コマンドの機能の要約文だけを見たい場合には、whatis コマンドを使います。環境変数 LC_MESSAGES が日本語ロケールに設定されている場合、または、LC_MESSAGES は設定されていないが LANG が日本語ロケールに設定されており、whatis コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られている場合は、日本語のコマンド機能要約を次のように表示できます。


sun% whatis dumpcs
dumpcs          dumpcs (1)      - 現在のロケールのコードセット一覧表を表示
sun%

apropos によるキーワード検索

whatis とは逆に、コマンド機能要約文中のキーワードからコマンド名を探したいときには apropos コマンドを使用できます。環境変数 LC_MESSAGES が日本語ロケールに設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されており、apropos コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られていれば、日本語のコマンド機能要約を次のように表示できます。


sun% apropos コードセット一覧表
dumpcs          dumpcs (1)      - 現在のロケールのコードセット一覧表を表示
sun%

電子メールの送受信

JFP は、複数バイト言語国際化のために拡張された mailx (/usr/SUNWale/bin/mailx) を提供しています。以降、簡単な日本語メールの送受信を例にして、mailx の使い方とコード変換について説明します。

説明の中で、いくつかの mailx のコマンドと変数が登場しますが、それらの詳しい使い方については、国際化のために拡張された mailx(1) のマニュアルページまたは『OpenWindows ユーザーズガイド (上級編)』を参照してください。

メールの起動

まず、第 3 章「日本語対応 SunOS のユーザー環境設定」「コマンド検索パスの設定」を参考にして、/usr/SUNWale/bin/mailx を起動するように設定します。以下に述べるコード変換は、LC_CTYPE のロケールが環境変数 LANG または LC_CTYPE を介してja または japanese に設定されている場合に行われます。また、環境変数 LC_MESSAGES が ja または japanese に設定されている場合、mailx からの警告メッセージなどは日本語になります (メッセージ自体は JFP が提供します)。

メッセージの作成

メールを送るときは、mailx の引数に送り先のユーザー名を指定します。たとえば、grape というユーザーにメールを送る場合は、次のように指定します。


lemon% mailx grape
Subject: 

mailxSubject: の入力を要求してきます。Subject: にメールの用件を入力した後、メールのメッセージ本文を入力します。JFP の提供する日本語機能を利用して、日本語のメッセージを入力できます。

lemon% mailx grape
Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。

メッセージをテキストエディタを使って作成することもできます。次のように ‾v と入力すると vi が起動します。起動するエディタは VISUAL 変数で指定します。デフォルトは vi です。mailx の変数は、mailx の起動中でも、起動ファイル (通常、ユーザーのホームディレクトリにある .mailrc) 内で設定できます。シェルの変数としても設定できますが、mailx を起動中に指定した値や起動ファイル内に指定した値が優先されます。


Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
‾v

‾v と入力すると、vi の画面に切り替わります。


To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
‾
‾
‾
‾
‾
‾
‾
"/tmp/Re8570" 7 行、121 バイト

ここで、日本語を追加入力します。


To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。		檸檬
‾
‾
‾
‾
‾
‾
‾
‾
:wq

vi を終了すると元の mailx に戻りますが、画面には vi での編集イメージが残っています。作成したメッセージを始めから見たい場合は、‾p と入力してメッセージを再表示します。メッセージのサイズが大きいと画面が流れてしまい、内容をゆっくり読むことができません。これを防ぐためには、crt 変数と PAGER 変数をあらかじめ設定しておき、ページごとに表示させるようにします。たとえば、mailx コマンド起動中に以下のように設定します。


? set crt=20
? set PAGER=/usr/bin/more

行頭の ? は mailx からのプロンプトです。

この設定を、ユーザーのホームディレクトリにある .mailrc の中であらかじめ記述しておくと、mailx 起動時に常に実行されるので便利です。


‾p
-------
メッセージの内容:
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
(つづく)

作成したメールは、行の先頭に「 . 」(ピリオド) を入力するか、CTRL-D を入力すると送信されます。mailx は終了してシェルに戻ります。メールの作成は日本語 EUC で行われてきましたが、送信時は 7 ビット JIS コードに変換されます。


‾p
-------
メッセージの内容:
To: grape
Subject: Next Lecture
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
(つづく)
.
作成終了
lemon%

メール作成の中止

作成の途中でメール送信を中止したいときは、割り込みキー (通常、CTRL-C) を入力します。割り込みキーを連続して 2 回入力すると、メッセージの作成を中止し、シェルに戻ります。途中まで作成されていたメッセージの内容は、dead.letter と呼ばれるファイル (あらかじめ設定されていない場合はユーザーのホームディレクトリにある dead.letter) に日本語 EUC で確保されます。


lemon% mailx grape
Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。^C
(割り込み -- メッセージ送信をやめるにはもう一度)
^C"/home/garden/lemon/dead.letter" 4/63
lemon%

送信したメッセージの保存

あらかじめ record 変数が設定されていると、送信するメッセージが record 変数で指定したフォルダに保存されます。record 変数は、デフォルトでは設定されていません。また、record 変数が設定されている場合に、mailx の変数 folderconv が設定されていると、メッセージは日本語 EUC で保存され、設定されていないと転送時の変換イメージ (7 ビット JIS コード) で保存されます。folderconv はデフォルトで設定されています。たとえば、record フォルダが ‾/.record の場合、以下のようにして、すでに送信したメッセージを参照できます。


lemon% mailx -f ‾/.record
mailx version ALE5.0 Mon Sep 12 11:09:29 JST  コマンドの概要は ? を
タイプしてください。
"+.record": 2 個のメッセージがあります。
>O   1   lemon   Tue Sep 29 21:33   13/249   Excursion
 O   2   lemon   Tue Sep 29 21:47   15/245   Next Lecture
?

行の先頭の ? は mailx からのプロンプトです。現在 2 個のメッセージがあります。先程転送したメール (Subject: Next Lecture) は 2 番目にあります。メッセージを読むコマンドはいくつかありますが、ここではメッセージ番号をそのまま入力する方法で実行します。


? 2
Message 2:
From lemon Tue Sep 29 21:47:01 1992
To: grape
Subject: Next Lecture
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
 
?
 
lemon%

メッセージの読み取り

今度は、先程ユーザー lemon が送ったメールをユーザー grape 側から読んでみます。メールボックスに届いたメールを読むには、mailx を引数なしで起動します。メールボックスにメールが届いていると、次のように表示されます。なお、この場合も LC_CTYPE および LC_MESSAGES のロケールが、環境変数 LANG、または 環境変数 LC_CTYPE および LC_MESSAGES を介して ja または japanese に設定されているものとします。


grape% mailx
mailx version ALE5.0 Mon Sep 12 11:09:29 JST  コマンドの概要は ? をタイプ
してください。
"/var/mail/grape": 2 個のメッセージがあります。 2 個新規。
>  N 1 Y.Suzuki(Tokyo off Tue Sep 29 21:40 17/528  President's Report
   N 2 A.Lemon            Tue Sep 29 21:47 21/513  Next Lecture
? 

到着したメッセージは日本語 EUC ではなく 7 ビット JIS コードに変換されていますが、表示されるときには自動的に日本語 EUC になります。


? 2
Message  2:
From lemon Tue Sep 29 21:47 JST 1992
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。

檸檬

?

「メッセージの作成」の項で行なったように、変数 crt および PAGER を設定しておくと、大きなサイズのメッセージも画面上で流れることなく、ページごとに見ることができます。

到着したメッセージの保存

mailx には、到着したメッセージを保存するためのコマンドが用意されています。s (save)、c (copy)、w (write) コマンドは、変数 folderconv が設定されていると、到着したメッセージを日本語 EUC にコード変換して保存します。savecopy は、フォルダの形式でヘッダー情報をつけて保存します。write はメッセージ本体だけを保存します。また、save を実行するとそのメッセージはメールボックスから取り除かれますが、copy の場合は保存後もメールボックスに残ります。


? save 2 folder.1
"folder.1" [新規ファイル] 22/481

save コマンドにより、メッセージ番号 2 のメッセージが folder.1 に保存されました。このときは日本語 EUC にコード変換されています。到着したメッセージを変換しないでそのままフォルダに保存したいときは、nsave または ncopy コマンドを利用して保存します。


? nsave 2 folder.2
"folder.2" [新規ファイル] 22/523

nsave コマンドにより、メッセージ番号 2 のメッセージが folder.2 にコード変換されずに保存されました。

一度読んだメールは特に明示的に保存しないと、mailx 終了時に mbox と呼ばれるフォルダ (あらかじめ設定していない場合はユーザーのホームディレクトリにある mbox) に保存されるように設定されています。この設定は mailx の変数の値と終了コマンドの種類によって変わります。mbox に保存される場合も、日本語 EUC にコード変換されてから保存されます。

到着したメッセージの編集


? visual 2

v (visual) コマンドにより、到着したメッセージをテキストエディタを使って編集できます。起動されるエディタは VISUAL 変数で指定されます。デフォルトは vi です。編集するメッセージが日本語 EUC にコード変換されてから、エディタが起動します。


From lemon Tue Sep 29 21:47 JST 1992
Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4)
	id AA01421; Tue, 29 Sep 92 21:47:02 JST
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM>
To: grape
Content-Type: text
Content-Length: 112
Subject: Next Lecture
X-Sun-Charset: ja_JP.euc
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬

‾
‾
‾
"/tmp/Rz8575" 18 行, 412 バイト

実際にメッセージを変更すると、変更後は日本語 EUC でメールボックスに保存されます。


From lemon Tue Sep 29 21:47 JST 1992
Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4)
	id AA01421; Tue, 29 Sep 92 21:47:02 JST
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM>
To: grape
Content-Type: text
Content-Length: 112
Subject: Next Lecture
X-Sun-Charset: ja_JP.euc
 
**** 予定変更のお知らせ *****

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
‾
‾
‾
‾
:wq

メッセージの返信方法

「メッセージの読み取り」に戻り、受信したメールに返事を出してみます。


? 2
Message  2:
From lemon Tue Sep 29 21:47 JST 1992
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。

檸檬
 
  
 
? r
To: lemon
Subject: Re: Next Lecture

r コマンドを実行すると、自動的に差出人宛てのメールを作成する状態になります。ここからは、「メッセージの作成」の項の説明に従って、‾p‾v などを使ってメッセージを作成できます。返事の中に、現在読んでいるメッセージまたは別のメッセージを挿入したいときは、‾m または ‾f と入力します。どちらの場合も、挿入メッセージが日本語 EUC にコード変換されて挿入されます。


? r
To: lemon
Subject: Re: Next Meeting

‾m
メッセージ挿入:  2
(つづく)

‾m の入力時に特にメッセージ番号を指定しなかったので、現在読んでいる 2 番のメッセージが挿入されました。ここで、vi を起動して (‾v コマンドの実行) 返事を書きます。


To: lemon
Subject: Re: Next Lecture
 
        From lemon Tue Sep 29 21:47 JST 1992
        Date: Tue, 29 Sep 92 21:47:02 JST
        From: lemon (A.Lemon)
        To: grape
        Subject: Next Lecture
         
        葡萄さん:
        次回の講習会は
                10月1日(木) 午後2:00開始
        に変更されました。
        会場は未定です。
 
        檸檬
 
了解しました。
 
葡萄

‾
‾
‾
:wq

挿入したメッセージの各行の先頭にはタブが挿入され、段落がつけられています。この自動的に挿入される文字列は、変数 indentfix で設定します。デフォルトはタブです。文字列の段落付けは、‾f でメッセージを挿入するときには適用されません。


:wq
"/tmp/Re8580" 21 行、333 バイト
(つづく)
.
 作成終了
?

「メッセージの作成」の項の説明に従って作成を終了すると、メッセージは 7 ビット JIS コードに変換されて送信されます。mailx 自体の終了には、 quit、コマンド行の先頭での CTRL-Dexit などのコマンドが用意されています。quitCTRL-D は、既読のメッセージを mbox に保存し、未読のメッセージをメールボックスに保存します。exit は、メールボックスを変更せず、メッセージを mbox に保存しないで mailx を終了します。mailx 終了時の動作は、 hold などの変数を設定してカスタマイズできます。

メール到着の通知

ここでは、comsat を利用したメール到着の通知を紹介します。まず、到着した日本語メールが正しくコード変換して表示されるように、第 4 章「日本語対応 SunOS のシステム環境設定」in.comsat の設定」に従って、 inetd(1M) の構成を修正します。

次に、biff(1B) でメール受信の通知を行うように設定します。


grape% biff y

このように設定すると、7 ビット JIS コードに変換された日本語メールが、到着時に日本語 EUC にコード変換され、画面にはじめの数行が表示されます。


New mail for grape has arrived:
----
Date: Wed, 30 Sep 92 11:56:35 GMT
From: lemon (A. Lemon - Garden Company)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
...以下省略...