それぞれの情報実験機のディレクトリ
/home/shotaro/BaraBara2011
に置かれているファイルを結合して jpg 形式の画像ファイルを復元し, その画像を表示する
シェルスクリプトを作成しましょう.
ただし, デタラメに結合しても目的の画像ファイルは復元できません.
それぞれのファイル名は{情報実験機番号}_001, {情報実験機番号}_002,...という形で格納されています
(例えば, 11001_001, 11001_002 のように格納されている).
しかし{情報実験機番号}は皆さんがよく知っている 10 進数ではなく 2 進数で書かれています.
更に
/home/shotaro/BaraBara2011
には全ての情報実験機番号のファイルが格納されており, 自分の情報実験番号のファイルを探し出す必要があります.
また, このファイルの中にはダミーファイルが紛れており, 本物の画像ファイルも探さなければなりません.
ファイル名の後ろ 3 桁の数字が素数であるものが本物の画像ファイルです.
- 皆さんにやってもらうこと
- 画像ファイルの{情報実験機番号}を 2 進数から 10 進数に直す.
- 10 進数に直したファイルから本物のファイルを抜き出し,
そのファイル名を新たに{情報実験機番号 (10進数)}_001, {情報実験機番号 (10進数)}_002,...
と1から順番に通し番号をつけ, ファイルを結合する (joho23の場合, 画像ファイルは 23_001, 23_002 のようになる).
- 画像ファイルは本物を real ディレクトリに, ダミーを dummy ディレクトリにそれぞれ格納する.
- 最終的に作業ディレクトリには real ディレクトリ, dummy ディレクトリ, スクリプトファイル,
結合後の画像ファイルのみを残す.
※スクリプトの書き方によっては実行時間が長くなる場合があります. 焦らず気長に待ちましょう. 数10分かかる場合も.
復元した jpg ファイルは以下のコマンドで見ることができます.
表示を終える際には表示されているウィンドウ上で 「q」 を入力しましょう.
$ display [復元したファイル]
※ 注意事項 ※
- 魔法使いのお爺さんや ImageMagic というロゴが出てきた場合,
画像がちゃんと復元されていません. Let's retry♪
- きちんと画像が表示されても完成していない場合があります.
並べる順番が違ったり, 足りなかったりするときちんとした形で画像は復元されません.
- スクリプトが完成したら, 以下のものをレポートとして投稿・掲載して下さい.
- 作成したシェルスクリプト
- シェルスクリプトのファイル名と完成した画像ファイル名(絶対パスで)
(例: /home/shotaro/kadai/kadai.sh, /home/shotaro/kadai/gazou.jpg
)
- 完成した画像を見た感想.
- 工夫, または苦労した点.
- 作業協力者がいれば必ず書く.
- 参考文献も掲載すること.
(人のレポートを参考にした場合もちゃんと書くこと).
- 余力のある人は他の情報実験機用の画像を作成するスクリプトを作ってみるのもいいでしょう.
- ヒントはこの授業で使用したテキストを始めとする WWW サイトにあり!
検索エンジン等を用いてものを調べる練習をしよう.
- コマンドの使い方が分からなくなったら
man で調べよう!
- やり方は一通りではない.
どうすれば一番楽か作業の順序立てを最初に考えよう.
- 結合するためだけのコマンド, というのはない.
しかしコマンドやシェルの各機能を組み合わせれば結合することは容易い.
cat,
リダイレクトがキーワード.
- 沢山のファイルに同じ処理を施すには,
メタキャラクタや
ループ処理が便利.
- パイプを活用して
複数のコマンドを組み合わせてみよう.
- ファイルから一部の文字列を取り出したり, 文字列を置換したり,
並べ替えたりする際には
sed,
tr,
grep,
cut,
sort,
head,
tail,
などのコマンドが有効となるでしょう.
- 一つのコマンドでも
コマンドラインオプション
によって様々な機能を発揮します.
man や WWW サイトで
いろいろ調べてみるべし.
- ヒントに囚われず, 自由な発想をしよう!!
- Linux 上の firefox, vi での日本語入力の方法
firefox
や vi
と入力する前に,
export LC_ALL=ja_JP.UTF-8
と
入力し, 言語環境を日本語にしてください.
なお, 切り替えの際, 「Num Lock」や「Caps Lock」が有効に
なっていると 日本語⇒英語 の切り替えが不可能になる症状が
発見されました. 切り替えできなくなった際はチェックしてみてください.
- Linux X-window system における文字のコピー and ペースト
以下の要領でコピー and ペーストできます
(最初うまく出来なくても 何度か試せば慣れるでしょう).
コピーしたい文字列にマウスポインタをもっていき 左クリックをしたまま
コピーしたい最後の文字まで移動させます
[これによりコピーしたい文字列の表示が白黒反転していることを確認すること].
そのままマウスポインタをコピー先に移動(ドラッグしなくて良い)させ,
マウス中央ボタンをクリック(2ボタンの場合 左右を同時にクリック)します.
- レポートの複数分割について
シェルスクリプトの量が多くなった場合,
1 つのレポート投稿可能な量を超えてしまう可能性があります.
始めからブラウザ (firefox) でレポートを作成するのではなく,
vi で一通り内容を作成してからコピー and ペーストを行うと,
ブラウザの異常終了や「進む」, 「戻る」の操作間違えで書きかけの
レポートが消えてしまうということが無くなるので,
こちらの方法をオススメします.
なお, 1つのレポートに投稿できるのはおおよそ 3000 バイト
(半角英数字 3000 文字 ≒ 全角日本語 1500 文字) です.
<< 戻る
(シェルスクリプト)
最初へ >>
(実習の前準備)
情報実験 第4回 のトップへ >>