● ITPASS実習 レポート1 ●






○ 氏名 : 小林 英貴

○ 情報実験機 : joho07

○ 提出日 : 2010.5.20




問1 ファイル自動転送 / 問2 カレンダー作成 / 問3 Hit and Blow





◎ 問1 ファイル自動転送



○ 問題

 作成したレポートを web 上で公開するには「レポートを適切なディレクトリ上に置くこと」と「レポートのパーミッションを適切に設定すること」をする必要がある.公開のたびに複数のコマンドを打っていては面倒なので, シェルスクリプトを使って作業を自動化する.
 引数に「現在転送したいファイルが格納されているディレクトリ」と「転送先のディレクトリ」を指定すると,前者の中にある全てのファイルとディレクトリを, パーミッションを,775: ディレクトリとスクリプト664: それ以外のファイルとして,後者のなかに設置するシェルスクリプトを作る.



○ スクリプトのURL

スクリプトのURL

○ スクリプトの解説

1. quiz1.sh.txtの内容を実行するために,コピーして自身のviにペーストする.(仮にファイル名をquiz1.shとする.)
2. ./quiz1.sh $1 $2 を実行する.
    $1 : 転送したいファイルが格納されているディレクトリの場所を入力.
    $2 : 転送先のディレクトリの場所を,($1からの)相対パスもしくは絶対パスで入力.
3. $1内のディレクトリとスクリプトのパーミッションは775に、その他は664に設定される.
4. それらのファイルがすべて$2へ転送される.
5.パーミッションが変化しているかどうか,転送先のディレクトリで"ls -l"と入力して確認する.



○ 実行結果へのリンク

実行結果へのリンク



○ 参考資料

金野圭祐さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.

板倉統さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.



○ 共同作業者

・ 塩崎 淳也 さん



○ 感想

 最初のうちは,コマンドの使い方など基本的なことがわからず,一つ一つの作業を進めるのに大変時間がかかりましたが,他人の作品も参考にすることで,なんとか出力できるところまで辿り着きました.








◎ 問2 カレンダー作成



○ 問題

 UNIX には, "cal" というコマンドが実装されている.シェルに$ cal 5 2010と入力することで2010年5月のカレンダーが出力される.
 この"cal"コマンドのように, 指定した年月のカレンダーを表示するシェルスクリプトを作る.



○ スクリプトのURL

スクリプトの URL

○ スクリプトの解説

1. quiz2.sh.txt内容を実行するために,コピーして自身のviにペーストする.(仮にファイル名をq uiz2.shとする.)
2. ./quiz2.sh を実行する.
    まず,"Enter your YEAR and MONTH"と表示される.
    次に,"YEAR"と表示されるので,出力するカレンダーの年を入力する.
最後に,"MONTH"と表示されるで,出力するカレンダーの月を入力する.
3. モニターとquiz2.txtにカレンダーが出力される.



○ 実行結果へのリンク

 2010年5月の実行結果を載せる.

実行結果へのリンク



○ 参考資料

板倉統さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.

松倉匡志さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.

ツェラーの公式 -Wikipedia

…ツェラーの公式について調べるのに参考にさせて頂きました.

http://www.geocities.jp/geo_sunisland/input_output.html

…printfの使い方について参考にさせて頂きました.

2000年はうるう年・・・で?

…閏年について調べるのに参考にさせて頂きました.



○ 共同作業者

・ 塩崎 淳也 さん



○ 感想

 他の人のシェルスクリプトを参考にしつつ,修正しながら試行錯誤を重ねたことで,なんとか出力することができました.かなり時間がかかりましたが,完成して良かったです.
閏年の判別について,正確にやってみたのですが,上手くできませんでした.
 今後の課題としては,もう少し短いスクリプトを作成できることを考え,勉強したいと思います.








◎ 問3 Hit and Blow



○ 問題

 以下のようなゲームをするスクリプトを作る.
 各桁が重複しない 4 桁の数字をランダムに用意する.(どの桁も 0 を含んではいけない.)
 ヒントを「大きい」「小さい」ではなく, 次のように出す.数字と桁の両方とも, 正解と一致する数字の数 ... Hit .数字は一致するが, 桁が違う数字の数 ... Blow
 正解が 2718 のとき, 1732 が入力された場合のヒント: 7 は, 数字と桁の両方とも正解と一致 --> 1 Hit 1 と 2 は, 数字は正解と一致しているが桁が違う --> 2 Blow したがって, ヒントは "1 Hit 2 Blow" となる.
 全ての数字と桁が一致するまで, ユーザからの回答とヒントの作成を交互に行う. 正解が入力されるとその旨を表示して, また成績として, 正解に至るまで何度の回答を要したかを表示する.



○ スクリプトのURL

スクリプトの URL

○ スクリプトの使い方の解説

1. quiz3.sh.txt内容を実行するために,コピーして自身のviにペーストする.(仮にファイル名をq uiz3.shとする.)
2. ./quiz3.sh を実行する.
    まず,"Type your first answer!"と表示されるので,4桁の数字を同じ数字を含まないように,適当に入力する.
    すると,その4桁の数字のうち,数字数字と桁の両方とも, 正解と一致する数字の数が"Hit", 数字は一致するが, 桁が違う数字の数が"Blow"として,その数が表示されるので,ヒントを元にして正答を考える.
3. 正答に辿りつくと,モニターとquiz3.txtにメッセージと合計回答数が出力される.



○ 実行結果へのリンク

実行結果へのリンク



○ 参考資料

金野圭祐さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.

板倉統さんのレポート

…レポートを書く際の土台として参考にさせて頂きました.



○ 共同作業者

・ 塩崎 淳也 さん



○ 感想

 他の人のレポートを参考にしながらも,ループ構造などが課題を行ううちに大分理解できてきたので、自分なりに見やすくなるように工夫して作ったつもりです.
今後の課題としては,課題2と同様にもう少し短いものを作ることだと思います.






○ 全体を通しての参考資料

[Exp2010]シェルスクリプト課題

……レポート作成のヒントとして参考にしました。

[Exp2010]シェルスクリプト

…コマンドの使い方の参考にしました。

[Exp2010]ITPASS サーバでレポートを公開するには

…レポートを公開する際の参考にしました。

初心者のためのポイント学習C言語

…コマンドについて調べる際に参考にさせて頂きました.

UNIX & Linux コマンド・シェルスクリプト リファレンス

…コマンドについて調べる際に参考にさせて頂きました.


○ お世話になったTAの方々

・ 井谷 優花 さん , 岩佐 奏 さん , 須賀 友也 さん , 山元 治人 さん

ありがとうございました.