[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIID(UNIXとHTML)第2回

目次
2.1 コマンドの形式
2.1.1 コマンドの引数
2.1.2 コマンドのオプション
2.2 オンライン・マニュアル
2.3 授業用のディレクトリ
2.3.1 ディレクトリの作成
2.3.2 ディレクトリの移動
2.4 テキスト処理(1)
2.4.1 テキストの出力
2.4.2 テキストの長さ
2.4.3 テキストの整列
2.5 演習2
2.6 レポート課題
2.7 参考文献
索引

2.1 コマンドの形式

2.1.1 コマンドの引数

前回の授業では、calコマンドを使ってカレンダーを表示しました。

b04a001@AsiaA1:~% cal
    October 2007
 S  M Tu  W Th  F  S
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

b04a001@AsiaA1:~%

これは今月のカレンダーです。 他の月のカレンダーを表示するには、次のように入力します。

b04a001@AsiaA1:~% cal 2007
                              2007                              

      January               February               March        
 S  M Tu  W Th  F  S   S  M Tu  W Th  F  S   S  M Tu  W Th  F  S
    1  2  3  4  5  6               1  2  3               1  2  3
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   4  5  6  7  8  9 10
14 15 16 17 18 19 20  11 12 13 14 15 16 17  11 12 13 14 15 16 17
21 22 23 24 25 26 27  18 19 20 21 22 23 24  18 19 20 21 22 23 24
28 29 30 31           25 26 27 28           25 26 27 28 29 30 31

       April                  May                   June        
 S  M Tu  W Th  F  S   S  M Tu  W Th  F  S   S  M Tu  W Th  F  S
 1  2  3  4  5  6  7         1  2  3  4  5                  1  2
 8  9 10 11 12 13 14   6  7  8  9 10 11 12   3  4  5  6  7  8  9
15 16 17 18 19 20 21  13 14 15 16 17 18 19  10 11 12 13 14 15 16
22 23 24 25 26 27 28  20 21 22 23 24 25 26  17 18 19 20 21 22 23
29 30                 27 28 29 30 31        24 25 26 27 28 29 30

        July                 August              September      
 S  M Tu  W Th  F  S   S  M Tu  W Th  F  S   S  M Tu  W Th  F  S
 1  2  3  4  5  6  7            1  2  3  4                     1
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   2  3  4  5  6  7  8
15 16 17 18 19 20 21  12 13 14 15 16 17 18   9 10 11 12 13 14 15
22 23 24 25 26 27 28  19 20 21 22 23 24 25  16 17 18 19 20 21 22
29 30 31              26 27 28 29 30 31     23 24 25 26 27 28 29
                                            30
      October               November              December      
 S  M Tu  W Th  F  S   S  M Tu  W Th  F  S   S  M Tu  W Th  F  S
    1  2  3  4  5  6               1  2  3                     1
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   2  3  4  5  6  7  8
14 15 16 17 18 19 20  11 12 13 14 15 16 17   9 10 11 12 13 14 15
21 22 23 24 25 26 27  18 19 20 21 22 23 24  16 17 18 19 20 21 22
28 29 30 31           25 26 27 28 29 30     23 24 25 26 27 28 29
                                            30 31

b04a001@AsiaA1:~% cal 11 2007
   November 2007
 S  M Tu  W Th  F  S
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

b04a001@AsiaA1:~%

コマンド cal 2007cal 11 2007 の2007や11を 引数 と呼びます。 引数は、「何をどうせよ」という指示の「何を」を表す部分です。 この例なら、コマンド cal 2007 は、「2007年のカレンダーを表示せよ」という指示になります。 コマンド cal 11 2007 は、「2007年11月のカレンダーを表示せよ」です。

引数の順序には意味があります。 順序を変えますと、別の意味になります。 例えば、 cal 2007 11 と入力しますと、11年2007月と見なされ、エラー・メッセージが表示されます。

calコマンドの形式は、次の3種類になります。

cal

これは、今月のカレンダーを表示します。

cal year

これは、 year 年のカレンダーを表示します。

cal month year

これは、 yearmonth 月のカレンダーを表示します。

なお、引数をとるコマンドでは、各要素をスペースで区切って入力します。

コマンドによっては、引数は必ず書かなければなりません。 また、引数の個数が3つ以上というコマンドもあります。

引数をとるコマンドの例をもう一つ紹介します。

echoコマンド は、引数をそのまま表示します。 形式は、

echo string

です。

b04a001@AsiaA1:~% echo "Good afternoon."
Good afternoon.
b04a001@AsiaA1:~%

2.1.2 コマンドのオプション

コマンドの引数に似たものに、 オプション というものがあります。 オプションは、コマンドに与える追加情報です。 コマンドによって、引数はなければエラーになりますが、オプションはなくてもエラーになりません。

オプションは、普通は先頭がマイナス記号です。 (プラス記号も使われます。) また、オプションの順序は入れ換えても大丈夫です。

オプションの例は、以下のテキスト処理の所で出てきます。


2.2 オンライン・マニュアル

コマンドの名前は覚えられても、引数やオプションまで覚えるのは大変です。 このため、UNIXでは、画面上でマニュアルが読めるようになっています。 このマニュアルを、 オンライン・マニュアル と呼びます。

manコマンド (MANual)は、オンライン・マニュアルを表示します。 コマンドの形式は、

man name

です。 例えば、calコマンドのマニュアルを表示するには、 man cal と入力します。

オンライン・マニュアルの続きを読むには、スペース・キーを押します。 上下の矢印キーを押しますと、一行ずつスクロールします。 読み終わりましたら、 q キーを押して終了します。


2.3 授業用のディレクトリ

2.3.1 ディレクトリの作成

パソコンのファイルを分類するときに、フォルダを利用したことを思い出してください。 UNIXでは、フォルダのことを ディレクトリ と呼びます。 今後はディレクトリという言葉を使いますが、フォルダのことだと思ってください。

この授業では、いくつかのファイルを作成します。 授業と関係のないファイルと混在しないように、授業用のディレクトリを作成し、そこにファイルを格納することにします。 ディレクトリの作成はコマンドでもできますが、今日はFinderを使います。 Finderのウィンドウを開き、ホーム・ディレクトリの中に、comp2dというディレクトリを作成してください。

2.3.2 ディレクトリの移動

ここで、「ターミナル」のカレント・ディレクトリを、授業用のディレクトリに変更します。 カレント・ディレクトリ とは、ファイルを指定する際の基準となるディレクトリです。

cdコマンド (Change Directory)は、カレント・ディレクトリを変更します。 cdコマンドについては、ファイル管理の話のときに説明します。 とりあえず、この授業で「ターミナル」を起動したら、最初に次のようにしてください。

b04a001@AsiaA1:~% cd comp2d
b04a001@AsiaA1:~/comp2d%

2.4 テキスト処理(1)

2.4.1 テキストの出力

それでは、Jeditでテキスト・ファイルを作成し、コマンドでテキスト処理を行います。 なお、ファイルは授業用のディレクトリcomp2dに保存し、保存するときのエンコーディングは「日本語(EUC)」、改行タイプは「Unix(LF)」にしてください。

まず、以下の内容のテキスト・ファイルmonth01.txtを作成します。

January
February
March
April
May
June
July
August
September
October
November
December

catコマンド (conCATenate)は、ファイルの内容を表示します。 形式は、

cat file

です。

b04a001@AsiaA1:~/comp2d% cat month01.txt
January
February
March
April
May
June
July
August
September
October
November
December
b04a001@AsiaA1:~/comp2d%

headコマンド は、ファイルの最初の10行を表示します。 形式は、

head file

です。 10行ではなく n 行にするには、オプションを使って

head -n file

とします。

b04a001@AsiaA1:~/comp2d% head month01.txt
January
February
March
April
May
June
July
August
September
October
b04a001@AsiaA1:~/comp2d% head -6 month01.txt
January
February
March
April
May
June
b04a001@AsiaA1:~/comp2d%

tailコマンド は、ファイルの最後の10行を表示します。 形式は、

tail file

です。 10行ではなく n 行にするには、オプションを使って

tail -n file

とします。

b04a001@AsiaA1:~/comp2d% tail month01.txt
March
April
May
June
July
August
September
October
November
December
b04a001@AsiaA1:~/comp2d% tail -6 month01.txt
July
August
September
October
November
December
b04a001@AsiaA1:~/comp2d%

2.4.2 テキストの長さ

次に、以下の内容のテキスト・ファイルscore01.txtを作成します。

John 80
Bob 70
George 100
Tom 90
Mark 80

wcコマンド (Word Count)は、ファイルの行数、単語数、文字数を表示します。 形式は

wc file

です。 文字数については、スペースや改行も文字として数えます。

b04a001@AsiaA1:~/comp2d% cat score01.txt
John 80
Bob 70
George 100
Tom 90
Mark 80
b04a001@AsiaA1:~/comp2d% wc score01.txt
       5      10      41 score01.txt
b04a001@AsiaA1:~/comp2d%

2.4.3 テキストの整列

sortコマンド は、ファイルをアルファベット順に並べ替えて表示します。 形式は

sort file

です。 逆順に並べ替えるには、オプションを使って

sort -r file

とします。

b04a001@AsiaA1:~/comp2d% sort score01.txt
Bob 70
George 100
John 80
Mark 80
Tom 90
b04a001@AsiaA1:~/comp2d% sort -r score01.txt
Tom 90
Mark 80
John 80
George 100
Bob 70
b04a001@AsiaA1:~/comp2d%

2列目、3列目を基準に並べ替えるには、読み飛ばす列数を n として

sort +n file

とします。

b04a001@AsiaA1:~/comp2d% sort +1 score01.txt
George 100
Bob 70
John 80
Mark 80
Tom 90
b04a001@AsiaA1:~/comp2d%

成績の悪い順に並べ替えたつもりですが、そうなってはいません。 これは、数字の列をアルファベット順の規則で並べ替えたからです。 数値と見なして並べ替えるには、オプション -n を使います。

したがって、 n 列読み飛ばし、数値と見なして並び替えるには、

sort +n -n file

となります。 オプションをひとまとめにして、

sort +nn file

と書くこともできます。

b04a001@AsiaA1:~/comp2d% sort +1 -n score01.txt
Bob 70
John 80
Mark 80
Tom 90
George 100
b04a001@AsiaA1:~/comp2d% sort +1n score01.txt
Bob 70
John 80
Mark 80
Tom 90
George 100
b04a001@AsiaA1:~/comp2d%

これで、成績の悪い順に並べ替えられました。


2.5 演習2

コマンドを使って、ファイルscore01.txtの成績表を、成績の良い順に並べ替えてください。

b04a001@AsiaA1:~/comp2d% ???
George 100
Tom 90
Mark 80
John 80
Bob 70
b04a001@AsiaA1:~/comp2d%

(ヒント: オプションは、すべてバラバラに書くか、すべてまとめて書くかのどちらかにしてください。)

余力のある人は、オリジナルの成績表をファイル(例えばscore02.txt)に保存し、コマンドを使って、それを成績の良い順に並べ替えてください。


2.6 レポート課題

今日の演習2の答案(「ターミナル」画面のコピー)をメールで提出してください。 差出人は学内のメール・アドレス(b04a001@cis.twcu.ac.jpなど)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(10月3日、10月5日)を明記してください。


2.7 参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2007年10月3日更新
小西 善二郎 <konishi@cis.twcu.ac.jp>
Copyright (C) 2007 Zenjiro Konishi. All rights reserved.