2007年06月15日
情報科学類 コンピュータリテラシ
筑波大学 システム情報工学研究科
コンピュータサイエンス専攻, 電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2007/2007-06-15
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
- Unix Super Text 下巻「第57章 Cの使いかた」、
「Javaの使いかた」、「第59章 プログラミングの道具箱」参考。
- てびき7章「言語処理系」参照。
- 次回6月19日火曜日は、講義室 3A309 に集合。
- 手引き(教育用計算機システム使用の手引き)を持って来る。
- ssh には方向がある。
サーバが動いている所にログインができる。
- ssh と同様に、scp にも方向がある。
コピー元とコピー先のホストのどちらがで、ssh のサーバ (sshd, ssh daemon) が
動いている必要がある。
サーバが動いていない場合、クライアントを動かすしかない。
コピー元とコピー先の両者とも動いていない場合、つかえない。
- Emacs で文字コードを指定しながら
ファイルを開くには、
M-x universal-coding-system-argument
を使う。
Coding system for following command:
というプロンプトに対して
文字コードを指定し、続いて C-x C-f
(find-file) を実行する。
人間が書いたプログラムを実行する方法には、大きく2種類ある。
- コンパイラを使う
-
人間が書いたプログラム(ソース・プログラム) を、一度、機械語に変換する。
機械語に変換するプログラムを、「コンパイラ」という。
実行時には、コンパイラは不要。
- インタプリタ(通訳系)を使う
- 人間が書いたプログラムを(機械語に変換することなく)直接実行する。
このプログラムを実行するプログラムを、インタプリタという。
実行時にも、インタプリタが必要。
その中間的な方法もある。
- コンパイラは、中間的な機械語
(抽象計算機、仮想計算機の機械語)に変換する。
- インタプリタが、中間的な機械語を実行する。
プログラミング言語の1つ。情報科学類の多くの必修科目で必要となる。
- プログラミング入門I (1年2学期)
-
http://www.coins.tsukuba.ac.jp/syllabus/GB10714_GB10724.html
- プログラミング入門II (1年3学期)
-
http://www.coins.tsukuba.ac.jp/syllabus/GB10734_GB10744.html
- データ構造とアルゴリズム (2年1学期)
-
http://www.coins.tsukuba.ac.jp/syllabus/L301911_L301921.html
(情報学類)
- データ構造とアルゴリズム実験 (2年1学期)
-
http://www.coins.tsukuba.ac.jp/syllabus/L301916_L301926.html
(情報学類)
コンピュータ・リテラシでは、夏休みに予習するために、C言語で書いたプロ
グラムをどうやって学類のコンピュータで動作させるかを説明する。
The Unix Super Text 第57章 Cの使いかた 参照。
C言語のソース・プログラムは、Emacs などのテキスト・エディタで
作成する。Cコンパイラは、cc (または gcc)というコマンドで、
端末の中でシェルから実行するのが一般的。
% mkdir ディレクトリ
% cd ディレクトリ
% cp ~yas/public_html/coins/literacy-2007/2007-06-15/ex/hello.c .
% ls
hello.c
% cat hello.c
#include <stdio.h>
#define NAME "(name)"
int main()
{
printf("Hello, %s\n", NAME );
}
% cc hello.c
% ls
a.out hello.c
% ./a.out
Hello, (name)
%
- cp コマンドで、例題をコピーしている。
- ls コマンドでコピーできたことを確認している。
- cat コマンドで、内容を確認している。
- cc コマンドで、「コンパイル(とリンク)」を行っている。
C言語で書かれたソース・プログラムを、
CPU により実行可能な機械語へ変換している。
変換された実行可能なプログラムは、
a.out
という
ファイルに保存される。
- ls コマンドで、a.out というファイルが作られたことを確認している。
- 「./a.out」と打つと、
カレントワーキングディレクトリにある
「a.out」という名前のファイルに含まれている
プログラムが実行される(
オペレーティング・システムにより
プロセスが作られ、
機械語命令がファイルからメモリにコピーされ、
CPU により実行される。
)。
cc は、C compiler の意味。gcc は、GNU project が開発している cc の意味。
MacOSX では、cc と打っても gcc が実行される。
(C言語で)プログラムを記述していると、エラーの山に遭遇する。人間は間違え
るものであることをさとることになる。エラーにいちいちめげていてはプログ
ラムは書けない。
% cat error.c
#include <stdio.h>
#define NAME "(name)"
int main()
{
printf("Hello, %s\n", NAME )
}
% cc error.c
error.c: In function 'main':
error.c:8: error: parse error before '}' token
%
この場合は、cc は、実行ファイルを作らない。
ファイル名と行番号をたよりに、プログラムを修正して、
エラーが出なくなるまで cc を実行する。
コンパイル・エラーがでなくなっても、プログラムは完成ではない。コンパイ
ラにはわからない(分かり得ない) 間違いは残っている可能性がある。
cc コマンドに -o オプションを付けると、a.out ではなく、-o の次に与えら
れた名前のファイルに実行可能なプログラムが保存される。
% ls
a.out hello.c
% rm a.out
% ls
hello.c
% cc -o hello hello.c
% ls
hello hello.c
% ./hello
Hello, (name)
%
C言語のソース・プログラムは、2種類に分類される。
- 拡張子 .c
- 関数定義を記述する。
C言語のプログラムは、
関数と呼ばれる小さなプログラムの集合で構成される。
- 拡張子 .h (ヘッダ・ファイル)
- 定数やデータ構造の定義を記述する。
複数の .c のプログラムに、
#include
で読み込まれる。
stdio.h
などのヘッダ・ファイルは、/usr/include/
以下に
ある。他の場所にある時には、cc コマンドに -I
オプションで
指定する。
(大きな)プログラムを記述する時に共通で使える 関数(小さな
プログラム)を集めたもの。cc コマンドは、libc
(library C)という
ライブラリにある関数を標準で自動的にリンクする。
libc などよくつかわれるライブラリは、
/usr/lib
にある。
libc 以外のライブラリを使う時には、cc に -l オプションを付ける。
/usr/lib
以外の場所にあるライブラリを使うには、-L オプションで
ディレクトリのパス名を与える。
大きなプログラムは、1つのファイルには入りきらない。複数のファイルに含
まれたC言語のソース・プログラムをコンパイルして、1つのプログラムにまと
める(リンクする)ことができる。
例:f1.c, f2.c, f3.c という3つのファイルに含まれているC言語のプログラ
ムをすべてコンパイルして、リンクし、完成した実行可能なプログラムを
prog という名前のファイルに保存する。
% ls f1.c f2.c f3.c
f1.c f2.c f3.c
% cc -o prog f1.c f2.c f3.c
%
毎回、全部のファイルをコンパイルすると、遅い。
ソース・ファイルを変更したプログラムだけをコンパイルしたい。
% ls f*.c
f1.c f2.c f3.c
% ls f1.*
f1.c
% cc -c f1.c
% ls f1.*
f1.c f1.o
% ls f2.*
f2.c
% cc -c f2.c
% ls f2.*
f2.c f2.o
% ls f3.*
f3.c
% cc -c f3.c
% ls f3.*
f3.c f3.o
% ls f*.c
f1.c f2.c f3.c
% ls f*.o
f1.o f2.o f3.o
% cc -o prog f1.o f2.o f3.o
% ./prog
This is main().
This is f1().
This is f2().
This is f3().
%
The Unix Super Text 第59.1節 make 参照。
(分割)コンパイルを楽にするためのプログラム。
どのようなファイルをコンパイルすればよいかの
定義を与えると、ファイルの日付を比較して、
自動的にコンパイルとリンクを行う。
% ls *.c
f1.c f2.c f3.c hello.c
% ls *.o
tcsh: ls: No match.
% cat Makefile
all: prog
objs = f1.o f2.o f3.o
prog: $(objs)
$(CC) -o prog $(objs)
% make
cc -c -o f1.o f1.c
cc -c -o f2.o f2.c
cc -c -o f3.o f3.c
cc -o prog f1.o f2.o f3.o
% ls *.c *.o prog
f1.c f1.o f2.c f2.o f3.c f3.o hello.c prog
%
all: prog
objs = f1.o f2.o f3.o
prog: $(objs)
$(CC) -o prog $(objs)
- all: prog
- make は標準で all というものを作る。
all とは prog のこと。
- objs = f1.o f2.o f3.o
- 変数定義
- prog: $(objs)
- prog は、$(objs) に「依存」している。
つまり、prog は、
$(objs) にあるファイルよりも新しくなければならない。
古かったら、次の行のコマンドを実行して作り直す。
- $(CC) -o prog $(objs)
- cc コマンドを実行して作り直す。CC という変数には、
最初は cc 定義されている。後で必要な変更できる。
make ファイルを書くときの注意点。実行すべきコマンドを書くところは、空白
ではなく「タブ」を打つ。上のファイルでは、$(CC) の前はタブ。
プログラミング言語の1つ。多くの情報科学のいくつかの選択科目で必要となる。
C言語と比べて近代的な機能、豊富なライブラリがある。
「オブジェクト指向」は、難しい。
コンパイラとインタプリタの2つを使って動作する。
- javac コマンド
- コンパイラ。Java ソースプログラムを読み込み、
「Javaバイトコード」と呼ばれる中間的なプログラムに変換する。
- java コマンド
- 「Javaバイトコード」を解釈実行する。
以下は、ディレクトリを作成し、Hello.java をコピーし、コンパイルして、実
行している。
% mkdir ディレクトリ
% cd ディレクトリ
% ls
(何も表示されない。mkdir 直後は、ディレクトリは空。)
% cp ~yas/public_html/coins/literacy-2007/2007-06-15/ex/Hello.java .
% ls
Hello.java
% cat Hello.java
class Hello
{
static String Name = "(name)";
public static void main(String args[])
{
System.out.println("Hello, "+Name);
}
}
% javac Hello.java
% ls
Hello.class Hello.java
% java Hello
Hello, (name)
%
javac コマンドは、拡張子 .java
のソース・プログラムを
コンパイルし、結果を
拡張子 .class
のファイルに保存する。
javac コマンドに複数のソース・ファイルを与えてもよい。
それぞれの .java
に対して .class
を生成する。
java コマンドは、拡張子 .class
の、拡張子を取り除いたファイル名
を与える。java name.class
と、.class
まで与える
とエラーになる。
java コマンドに与える .class
ファイルには、特定の形式の main 関
数 (main メソッド) が含まれている必要がある。
Java のプログラムを開発するためには、Emacs と javac, java コマンド以外
に、Eclipse という統合開発環境を使う方法もある。これは、エディタとコン
パイラが一体的に利用できる。強力な補完機能、見やすいエラー表示、大域的
なソース・プログラムの整理(リファクタリング)が容易である。
学類コンピューティング環境では、Dock に Eclipse を実行すためのアイ
コンがある。
The Unix Super Text 第9章 ファイルとディレクトリ 参照、
The Unix Super Text 第21章 ファイルとディレクトリの高度な操作 参照。
ホーム・ディレクトリ、
Desktop や Documents(書類)に、多くのファイルを放置することはよくない。
ディレクトリを作成し、整理すべきである。
[再掲]
mkdir (make directoryr)コマンドを使う。
% mkdir dirname
この結果、dirname
という名前のディレクトリが作らる。
[再掲]
ファイル名を変更するには mv (move) コマンドを使う。
% mv oldname newname
この結果、ファイルoldfileのファイル名をnewnameに変更される。
ここで、newname のファイルが存在した場合、元の newname は消されてしまう。
ファイル名を変更する mv (move) コマンドは、
同じディレクトリだけでなく、他のディレクトリに対しても使える。
% mkdir ~/dir1
% mv oldname ~/dir1/newname
この結果、カレント・ワーキング・ディレクトリにある
ファイルoldfileのファイル名は、
~/dir1/newnameに変更される。
次のように、ディレクトリだけを指定することもできる。
% mv oldname ~/dir1/
この場合、次のものと同じになる。
% mv oldname ~/dir1/oldname
また、変更先にディレクトリを指定する mv では、ファイル名は1個でなくて
も複数でもよい。
% mv file1 file2 file3 ~/dir1
意義
- 記憶媒体を有効に利用する。
ファイルを消すと、それまでそのファイルのデータを保持するために使われて
いたディスクの領域が解放されて、再利用される。
- 目的のファイルを見つけやすくなる。
ファイルを消すには、rm (remove) コマンドを用いる。
% rm file1
このファイル file1 が削除される。
rm コマンドで消してしまったファイルは、一般的には2度と戻らない。
消す前に、本当に不要かどうかを確認すること。
rm コマンドには、-i オプションがあり、ファイルを消すかどうかを対話的
(interactive)に y/n で聞いてくる。消してもよい時には、y と答える。
alias 等て、rm を rm -i に変えることは、一般的には勧められない。
「rm -i
y」という操作が、一連の操作として身に付いてしまうので。
rm コマンドで削除したファイルでも、ディスク上にデータが普通にはアクセス
できない形で残されていることが一般的である。場合によっては、そこから機
密情報が漏れることがある。
完全に消し去るには、次のような方法を持ちいる。
- wipe 機能を持つプログラムを用いる。データを消す前に、0, 1, 乱数な
ど何度か書き込む。
- ディスクを回復できない程度に物理的に破壊する。
- 最初からデータを暗号化してディスクに書き込む。
大量の情報を保存するには、木構造を使うしかない。
しかし、木構造だけではうまくいかない。

図13 こうもりの分類(1)

図14 こうもりの分類(2)
木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ
けでは、ファイルを整理するには不都合が起きる。それを解消するために、次
のような名前で呼ばれる仕組みが用意されている。
- シンボリック・リンク(symbolic link,UNIX)
- エイリアス(alias, Macintosh)
- ショートカット(shortcut, Windows)
2つの節に、「別名」をつけて、2つの道からたどり着けるようにする。
(木構造では、1つの節にたどり着く道は、ただ1つしかない。)
注意:csh の alias とファイル名の alias (Macintosh) は、まったくの別物。

図15 こうもりの分類(別名つき)
- 整理棚。人間を系統的に分類する。事実を系統的に分類する。(保存)
- 情報が流れる経路。(通信)
情報の流れには予算の流れも関連している。
- 大きさ、細分化の問題。縦割り行政(木構造行政)。
- 時間的に古くなる。環境変化についていけない。
中間管理職の意味==横方向に情報が流れない。
木構造でしか情報が流れないような組織は、潰れる。木構造を補う意味で、会
社組織では、裏チャネルや同期会が重要となる。
会計法違反。外務省に分かれた予算を首相官邸に流した。
国会の審議の意味がなくなった。
木構造のどちらに付くか。
木構造を補う方法として、
ハイパーテキスト
を使うことがある。
シンボリック・リンク(symbolic link)は、Unix で、ファイルに別名をつける
ための機能。「リンク」とは、木構造の枝の意味で、つまり、ファイル名を意
味する。シンボル(symbolic link)は、文字列を意味する。
シンボリック・リンク(symbolic link)は、文字列の形で、ファイルの別名を保
持している。
例:cc と gcc-4.0
% ls -l /usr/bin/cc
lrwxr-xr-x 1 root wheel 7 Jun 6 17:31 /usr/bin/cc -> gcc-4.0
%
シンボリック・リンクは、ls -l で見ると、右端に l (小文字の L) と表示さ
れる。
ファイル /usr/bin/cc を参照すると、gcc-4.0 (/usr/binにある)が使われる。
シンボリック・リンクを作成するには、ln -s コマンドを使う。
% ln -s oldname newname
この結果、newname
でファイルを参照すると、
oldname
というファイルが使われる。(このファイルは、
newname
と oldname
の2つの名前を持つ。)
手引き XI 参照。
MacOSX の Finder は、次のような役割を持つ。
- アプリケーション・プログラムを実行する。
- たくさんのウインドウを開いている時、重なり具合を調整する。
- 操作対象のウインドウ(アクティブ・ウインドウ)を変更する(アクティブ化)。
- ファイルやディレクトリの名前や大きさ表示する(ls, ls -l相当)。
- ファイルやディレクトリの名前や変更する(mv相当)。
- ディレクトリ(フォルダ)を作成/削除する(mkdir, rmdir相当)。
端末を開き、コマンドラインで操作をしている時、open コマンドを使うと
ディレクトリを Finder で開くことができる。また、
アプリケーションを実行する(Finder でダブルクリックする) ことができる。
ログインすると、何もウインドウを開いていない状態で「デスクトップ」と呼
ばれる特別の場所にあるファイルやディレクトリが画面に表示される。
デスクトップは、MacOSX では、ホーム・ディレクトリの下の
「~/Desktop
」という名前のディレクトリに対応している。
Finder でファイルを削除する。この時、実際にファイルを削除するのではなく、
一度、「ゴミ箱」に入れる。
ゴミ箱に入れたファイルは、rm コマンドで削除したものと違って、(入れた直
後なら)元の状態にすることができる。Dock の「ゴミ箱」をクリックすると、
Finder でフォルダのように表示される。そこから、ドラッグで普通のフォルダ
に移動させる。
注意事項
- 「ゴミ箱を空にする」という操作を行うと、回復できなくなる。
- 「ゴミ箱を空にする」という操作を行うまでは、ディスク容量を消費したままである。
MacOSX には、Unix 系オペレーティング・システムで共通に使える
シンボリック・リンクの他に、MacOSX 独自の(MacOS9以前から引き継いだ)
機能として、ファイル名に対するエイリアス(alias)の機能がある。
シンボリック・リンクとエイリアスの違い
- シンボリック・リンクは、端末で動作するコマンドでもMacOSX でウイン
ドウを開くアプリケーション(Aqua)でも両方で使える。エイリアスは、端末で
動作するコマンドでは使えない。
- エイリアスは、指している先のファイル名を変更しても、ある程度は追随
できる(完璧ではない)。シンボリック・リンクは、名前を変更すると追随で
きない。
実習時間中には、
以下の課題をできるだけ多く行いなさい。全部を行う必要はない。
「ccコマンド」 の所で用いたhello.c をコピーし、コ
ンパイルし、実行しなさい。
「javac コマンドと java コマンド」で用いた
Hello.java をコピーし、コンパイルして実行しなさい。
次のコマンドを利用して、ファイルを整理しなさい。
ls -l を使って、次のディレクトリにどのようなシンボリック・リンクがある
かを調べなさい。
- /Applications
- /usr
- /usr/local/
- /usr/bin
/bin, /usr/bin には、C 言語で記述されたプログラムの他に、シェル・スクリ
プト(主に/bin/sh)も含まれている。どのようなシェル・スクリプトがあるかを
調べなさい。
そのプログラムが、一般のプログラム(機械語)かシェル・スクリプトかは、
file コマンドを使うと調べることができる。
% file /usr/bin/apropos
/usr/bin/apropos: Bourne shell script text executable
% ls -l /usr/bin/apropos
-rwxr-xr-x 1 root wheel 2408 Aug 22 2005 /usr/bin/apropos
% lv /usr/bin/apropos
%
open コマンドは、Finder でダブルクリック(コンテキスト・メニューの開く)
を行ったことと同じ効果がある。 ディレクトリ名を指定してopen コマンドを
実行すると、その内容を表示する Finder のウインドウが開く( .app のディレ
クトリを除く)。
例:
- open .
- open /Applications
- open /
- open ~
- open ~/Desktop
ディレクトリ名「.」を指定して、open コマンドを実行すると、カレント・ワー
キング・ディレクトリの内容を表示する Finder のウインドウが開く。
次のようにすると、デスクトップをFinder で他のディレクトリと同じように表
示することができる。このことを確認しなさい。
- 端末で open ~/Desktop と打つ
- Finder で新しくウインドウを開き、サイドバーの
「デスクトップ」を選択する。
- Finder で、ホーム・ディレクトリを表示する。
そして、「デスクトップ」というフォルダを開く。
Finder で複数のディレクトリを表示して、それらの間でドラッグすることで、
ディレクトリ間でファイルを移動させることができる(mv コマンド相当)。
この機能を確認しなさい。
1つのディレクトリしか表示しない状態でも移動することはできるが、
マウスの操作が難しいので、やらない方がよい。
Finder で、ファイルを選択肢し、コピー&ペーストで「コピー」することがで
きる。このことを確認しなさい。
option キーを押しながらドラッグすると、移動ではなく、コピーになる。
なお、コピーを行った後、元のファイルを消せば実質的に移動(改名)になる。
Finder を使って、(1つのディレクトリ内で)ファイル名を変更することがで
きる。このことを確認しなさい。
- 変更したいファイル(またはディレクトリ)をシングルクリックで選択する。
- しばらく待って、名前をクリックする。
または、リターン・キーを打つ。
すると、名前の部分が、編集可能になる。
- マウスや矢印キーで、カーソルを移動する。Delete キーなどで、不要な
部分を消す。必要なキーを打つ。
- 最後にマウスで別のウインドウやアイコンをクリックしたり、リターン・
キーを押すと、編集可能な状態から抜ける。
Finder で、フォルダ(ディレクトリ)を作成することができる。
このことを確認しなさい。
- Finder で新たに作成したいフォルダ(ディレクトリ)の
親ディレクトリを開き、クリックして選択する。
- 「ファイル」メニューから「新規フォルダ」を選ぶ。
「
名称未設定フォルダ
」という名前のフォルダが作成される。
- Finderによるファイル名の付け替え と同
様に、名前をつける。
Finder で、ファイルを削除することができる。このことを確認しなさい。
- 削除したいファイルを、クリックして選択する。
- 次のいずれかの操作を行う。
- 「ファイル」メニューから「新規フォルダ」を選ぶ。
- 「Command(
)+Delete」を使う。
- Dock にある「ゴミ箱」のアイコンにドラッグする。
- コンテキスト・メニューを表示(右クリック、Control+左クリック)し、
「ゴミ箱に入れる」を選択する。
Finder で ファイルに対するエイリアスを作成してみなさい。
Finder を利用して、ファイルを整理しなさい。
tree コマンドを利用して、ファイルを木構造が分かりやすいように表示しなさい。
lynx や w3m のように、端末で動作する Web ブラウザを利用してディレクトリ
木を表示しなさい。
Emacs に含まれている Directory Editor を利用して
ディレクトリ木を表示しなさい。
The Unix Super Text 19.4.4項参照 参照。
tar コマンドは、tape archive の略で、ファイルやディレクトリの木構造を保っ
たまま磁気テープのような先頭から逐次的にしかアクセスできないようなメディ
アにコピーするプログラムである。コピーの主な目的は、長期保存(アーカイ
ブ)やバックアップであった。元のファイルが失われた時、テープから復元す
ることができる。
最近では、複数のファイル(ディレクトリを含んだもの)を、1つにまとめる
ために使うことが多い。
tar コマンドは、gzip コマンドや compress コマンドなどの圧縮プログラムと
合わせて使われることが多い。
tar コマンド単体では、圧縮の機能はないが、z オプションを付けると自動的
に gzip コマンドを実行する機能がある。
tar ファイルを作成しなさい(tar c)。
手引き 2.6.2 項 参照、
The Unix Super Text 37.2 節 参照。
作成した tar ファイルに含まれているファイルの一覧を、展開することなく
画面に表示しなさい(tar t)。
作成した tar ファイルの内容を、別のディレクトリに展開しなさい(tar x)
tar コマンドと ssh コマンドを組み合わせると、異なるコンピュータ間でファ
イルをディレクトリ構造を保ったままコピーすることができる。
tar コマンド以外にも、次のようなアーカイブのためのコマンドがある。
- cpio
- pax
- zip, unzip
- ar (C 言語のライブラリ用)
- jar (Java 言語のライブラリ用)
- lha
- StuffIt
これらのプログラムを、man ページ、
The Unix Super Text 第37章圧縮とアーカイブ 参照を参照して実行してみなさい。
MacOSX の Finder は、フォルダ(ディレクトリ)のアーカイブ(zip形式)を作
成する機能がある。これを実行してみなさい。
- フォルダを選択する(左シングルクリック。)
- コンテキスト・メニューを表示する(右クリック、または、Control+左クリック)。
- 「"フォルダ名"のアーカイブを作成」という項目を選ぶ。
フォルダ(ディレクトリ)の横に、拡張子 .zip を持つアーカイブ・ファイル
が作成される。
作成したファイルを、別のディレクトリに移動して、展開しなさい。展開する
には、Finder で、ダブルクリックするか、端末でunzip コマンドを使う。
fwipe コマンドでファイルを消去してみなさい。
締め切りは、2007年6月19日火曜日とする。
以下の問題、および、回答をテキスト・ファイルに記述し、
レポート提出ページから提出しなさい。
(1) 「ccコマンド」 の所で用いたhello.c をコピーし、
(name)
を自分の名前で置き換えなさい。これを、コンパイルして実行し
なさい。名前は、漢字ではなく、ASCII 文字だけでローマ字を使いなさい。
端末での、コンパイルと実行の様子を、シェルのプロンプトも含めてテキスト・
ファイルにコピーしなさい。
(2) 「javac コマンドと java コマンド」で用いた
Hello.java をコピーし、
(name)
を自分の名前で置き換えなさい。これを、コンパイルして実行し
なさい。名前は、漢字ではなく、ASCII 文字だけでローマ字を使いなさい。
端末での、コンパイルと実行の様子を、シェルのプロンプトも含めてテキスト・
ファイルにコピーしなさい。
(3) mkdir, rm, ln -s 等のコマンドや Finder を用いて、ファイルを整理しなさい。
レポートには次の項目を含めなさい。
- 整理前の状況の簡単。問題点。
- 作成したディレクトリの名前
- シンボリック・リンクを作成した場合、
作成したシンボリック・リンクの名前と内容(ls -l の表示)
- 最終的なディレクトリ構成の説明。
シンボリック・リンクは使っても使わなくてもよい。
ディレクトリ構成の説明には、tree コマンドの結果を利用してもよい。ただし、
今回整理した部分だけを含めること。~/Library/ など、自分では整理しなかっ
たファイルについては、含めないこと。
課題が出される前に既にディレクトリを作成していた場合には、
そのディレクトリについて報告してもよい。
(4) The Unix Super Text の次の部分を読みなさい。
次の項目について1-3行で説明しなさい。
- grep 系の正規表現で、任意の1文字
- grep 系の正規表現で、直前の文字の0回以上の繰り返し
- grep 系の正規表現で、\(r\)と\1 の意味
- Emacs のインクリメンタルサーチとは何か。どうすれば利用できるか。
- less の検索機能(lvも同じ)をどうすれば利用できるか。
- Emacs の replace-regexp (Unix Super Text には replace-string-regexp)
(5) [加点] ファイルのアーカイブと圧縮について、次のようなことを行ってみなさい。
- 単独のファイルを圧縮する/複数のファイルをまとめて圧縮する。
- 小さなファイルを圧縮する/大きなファイルを圧縮する。
- テキスト・ファイルを圧縮する/画像ファイルを圧縮する。
この結果を考察しなさい。利用したアーカイブ・プログラム、利
用したファイルの種類と大きさを含めなさい。
(6) [加点] 複数のアーカイブ・プログラムを比較して、使いやすさ、圧縮率、
エラーに対する対策をなど観点から評価しなさい。
Last updated: 2007/06/15 12:12:14
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>