前回の授業では、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 2007 や cal 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
これは、 year 年 month 月のカレンダーを表示します。
なお、引数をとるコマンドでは、各要素をスペースで区切って入力します。
コマンドによっては、引数は必ず書かなければなりません。 また、引数の個数が3つ以上というコマンドもあります。
引数をとるコマンドの例をもう一つ紹介します。
echoコマンド は、引数をそのまま表示します。 形式は、
echo string
です。
b04a001@AsiaA1:~% echo "Good afternoon." Good afternoon. b04a001@AsiaA1:~%
コマンドの引数に似たものに、 オプション というものがあります。 オプションは、コマンドに与える追加情報です。 コマンドによって、引数はなければエラーになりますが、オプションはなくてもエラーになりません。
オプションは、普通は先頭がマイナス記号です。 (プラス記号も使われます。) また、オプションの順序は入れ換えても大丈夫です。
オプションの例は、以下のテキスト処理の所で出てきます。
コマンドの名前は覚えられても、引数やオプションまで覚えるのは大変です。 このため、UNIXでは、画面上でマニュアルが読めるようになっています。 このマニュアルを、 オンライン・マニュアル と呼びます。
manコマンド (MANual)は、オンライン・マニュアルを表示します。 コマンドの形式は、
man name
です。 例えば、calコマンドのマニュアルを表示するには、 man cal と入力します。
オンライン・マニュアルの続きを読むには、スペース・キーを押します。 上下の矢印キーを押しますと、一行ずつスクロールします。 読み終わりましたら、 q キーを押して終了します。
パソコンのファイルを分類するときに、フォルダを利用したことを思い出してください。 UNIXでは、フォルダのことを ディレクトリ と呼びます。 今後はディレクトリという言葉を使いますが、フォルダのことだと思ってください。
この授業では、いくつかのファイルを作成します。 授業と関係のないファイルと混在しないように、授業用のディレクトリを作成し、そこにファイルを格納することにします。 ディレクトリの作成はコマンドでもできますが、今日はFinderを使います。 Finderのウィンドウを開き、ホーム・ディレクトリの中に、comp2dというディレクトリを作成してください。
ここで、「ターミナル」のカレント・ディレクトリを、授業用のディレクトリに変更します。 カレント・ディレクトリ とは、ファイルを指定する際の基準となるディレクトリです。
cdコマンド (Change Directory)は、カレント・ディレクトリを変更します。 cdコマンドについては、ファイル管理の話のときに説明します。 とりあえず、この授業で「ターミナル」を起動したら、最初に次のようにしてください。
b04a001@AsiaA1:~% cd comp2d b04a001@AsiaA1:~/comp2d%
それでは、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%
次に、以下の内容のテキスト・ファイル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%
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%
これで、成績の悪い順に並べ替えられました。
コマンドを使って、ファイルscore01.txtの成績表を、成績の良い順に並べ替えてください。
b04a001@AsiaA1:~/comp2d% ??? George 100 Tom 90 Mark 80 John 80 Bob 70 b04a001@AsiaA1:~/comp2d%
(ヒント: オプションは、すべてバラバラに書くか、すべてまとめて書くかのどちらかにしてください。)
余力のある人は、オリジナルの成績表をファイル(例えばscore02.txt)に保存し、コマンドを使って、それを成績の良い順に並べ替えてください。
今日の演習2の答案(「ターミナル」画面のコピー)をメールで提出してください。 差出人は学内のメール・アドレス(b04a001@cis.twcu.ac.jpなど)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(10月3日、10月5日)を明記してください。