最低限 Unix / Linux [II] 【6. 本日の課題】

  1. 事前準備
  1. シェル
  1. テキストエディタ
  1. シェルスクリプト
  1. [付録] データ圧縮・解凍とアーカイブ
  1. 本日の課題
  1. [付録] プランク関数
情報実験第 4 回トップへ

本日の課題

本日は必須課題と応用課題が存在します.
必須課題は単位取得のために必須となりますので必ず回答してください.
応用課題は単位取得のために必須とはなりませんが, 回答すると成績評価があがる可能性があります.

本日の必須課題

本日の必須課題はテキストエディタを使って 以下の要件を満たしたシェルスクリプトを作る課題です。

シェルスクリプトの要件

提出内容

以下のものを提出せよ。〆切:2021年5月19日 12:00

ヒント

本日の応用課題: データファイルの整形

本日の実習の内容+αを用いて,多数のファイルを整理するためのシェルスクリプトを作成しましょう.

課題背景

惑星宇宙グループの H さんは系外惑星の研究をしていて、その研究をすすめるために放射について 勉強しています。さて、勉強をすすめるうちに、プランクの法則というものがあることを知りました。 プランクの法則は、黒体と呼ばれる仮想的な物体が射出する放射の放射強度が、温度をパラメーターとして、 波長の関数として決定されるという法則です。この関数はプランク関数と呼ばれています。 プランクの法則に関しては、付録を参照してください。

H さんは、さまざまな温度の黒体について、プランク関数を用いて波長と放射強度の関係を計算し、 プランク関数のグラフを書こうとしました。しかし、データをうまく整理できず、グラフを書くのに 困っているところです。さらに、グラフを書こうと試行錯誤しているうちに、ファイルの名前を誤って 変更してしまいました。みなさんのシェルスクリプトの力でデータを整理し、 H さんがグラフを書くのを助けてあげましょう。

データの説明

H が計算したデータを以下のように纏めて /home/inex/data/ に格納した。

  1. data ディレクトリの直下に、3000, 3500, ..., 7000 のディレクトリ(以下、温度ディレクトリと呼ぶ) を配置した。温度ディレクトリ名の数字は黒体の温度 (単位 K) を表す。
  2. それぞれの温度ディレクトリには、0.00, 0.0i, 0.02, ..., 0.09, 0,i0, 0,ii, ..., i.99, 2.00 というファイル(以下、放射強度ファイルと呼ぶ)が存在していて、 それぞれ波長 0.00, 0.01, 0.02, ..., 0.09, 0.10, 0.11, ..., 1.99, 2.00 μm の 放射強度が格納されている。ファイル名に i が含まれているのは、H さんがキーボードの 1 と I を見誤って、 放射強度ファイルのファイル名の 1 を i にしてしまったためである。
  3. 上で述べたそれぞれの放射強度ファイルには、プランク関数を用いて計算した、放射強度ファイルの ファイル名に対応する波長の放射強度 (単位 10^{10} W/m^2/sr/m) がテキストで格納されている。 ただし、波長 0 μm に対応する放射強度ファイル 0.00 には、“0.00 (limiting value)” というテキストが格納されている。 これは、プランク関数の波長 0 μm での値は、極限値としてしか求まらないからである。

たとえば、data/5000/i.i0 という放射強度ファイルには “583.224089” というテキストが格納されている。 これは、5000 K の黒体は、波長 1.10 μm の放射を、583.224089 × 10^{10} W/m^2/sr/m の強度で射出することをあらわす。

シェルスクリプトを用いて作成するもの

シェルスクリプトを用いて、以下のものを作成する。

  1. 正しいファイル名の放射強度ファイル
  2. 波長と放射強度の関係を黒体温度ごとにまとめたファイル(以下テーブルファイルと呼ぶ)

作成するシェルスクリプト

この課題では、受講生の皆さんには、以下を順番に実行するシェルスクリプトを作成してもらう。 作成したシェルスクリプトは、mktbl.sh という名前で自分のホームディレクトリの直下に保存すること。

  1. 各自のホームディレクトリに data ディレクトリがあれば、それを削除する。
  2. 各実験機に配置されている、/home/inex/data 以下のファイルを各自のホームディレクトリの data ディレクトリにコピーする。
  3. ~/data ディレクトリに含まれる放射強度ファイルのファイル名を正しいものに直す。
  4. data ディレクトリに 9 つのテーブルファイル *.tbl を作成する。

また、./mktbl.sh をホームディレクトリで実行すると、シェルスクリプトが実行されるようにすること。 TA, VTA がシェルスクリプトの内容を確認し、実行できるように、パーミッションを変更すること。

提出内容

以下のものを提出せよ。〆切:2021年5月19日 12:00

さらに進んで

受講生の皆さんにはテーブルファイル *.tbl を作成するところまで行ってもらいました。

これらのファイルと、gnuplot(2018 年度 inex 第 3 回実技資料を参照)というグラフを作るためのプログラムを利用してグラフを作成することができます。

グラフを作成するためには、/home/inex/planck に格納されている、mkfig.gpl というテキストファイルを利用します。 mkfig.gpl の中には、gnuplot にグラフを描画させるための命令が並んでおり、この命令を gnuplot が実行することで グラフを作成します。

具体的には、以下のコマンドを実行すると planck.png というグラフが作成されます。

$ cd ~/data
$ cp /home/inex/placnk/mkfig.gpl ./
$ gnuplot mkfig.gpl

しかし、作成された png ファイルを確認するために、特別な下準備をする必要があるので、 今回の課題ではグラフの作成まで行わず、必要なデータの整理だけを行いました。「特別な下準備」の例としては、 以下のようなものがあります。気になる人は調べてみてください。

困ったときは

ヒント




<< 戻る (データ圧縮・解凍とアーカイブ)      情報実験 第 3 回 のトップへ >> 次へ >>([付録] プランクの法則)

最終更新日: 2021/05/05 (人見祥磨) copyright © 2020 inex