計算物理学II (第１回)

秋AB ⾦曜５限
担当：⽇野原 伸⽣ (物理学類・原⼦核理論研究室)
居室：計算科学研究センター2F 215号室
メール：
Microsoft Teamsアカウント： hinohara.nobuo.ga
講義資料・レポート：https://wwwnucl.ph.tsukuba.ac.jp/~hinohara/compphys2-22/

計算物理学II
電源を入れた後Ubuntuを起動してください
Windowsを起動してしまった人は一度再起動してくださいLinuxの開始・終了

ユーザ名：s+学籍番号の下7桁
パスワード：統⼀認証パスワード

授業⽇・授業内容
Linuxの使い⽅• 10/7 第１回• 10/14 第２回• 10/21 第３回

オリエンテーション・計算機システムの使い⽅
Linuxコマンドの基礎、シェル、ファイル、ディレクトリ操作
テキスト編集・TeX・Gnuplot

Fortran/Cによる数値計算プログラミング• 10/28 第４回
四則演算)• 11/9 (⽔) 第５回• 11/11 第６回• 11/18 第７回• 12/2 第８回• 12/9 第９回• 12/16 第10回

Fortran/Cによる数値計算プログラミング(コンパイル・実⾏・繰り返し⽂・組み込み関数
配列・条件⽂関数・サブルーチン副プログラム
ファイル⼊出⼒・グラフ作成
配列の動的割付・ポインタ
多次元配列の動的割付・構造体など

受講に関する注意• 対⾯とオンラインのハイブリッド形式です• 対⾯は1Dサテライト室、オンラインは皆さんのパソコンから全学計算機システムにログインして⾏います• サテライト室では：マスク着⽤・端末にふれる前後に⼿洗い消毒・飲⾷禁⽌• ディスプレイは⼿で触らない• ⾃分のPCを持ち込んでもよいが充電はダメ• オンラインでの演習にはコンピュータ(WindowsまたはMac)とインターネットが必要です。
• 演習する内容は授業のホームページに掲載します。こちらの内容に従って演習をすすめてください
https://wwwnucl.ph.tsukuba.ac.jp/~hinohara/compphys2-22/

サテライト室の開室状況(10/1現在)• https://www.u.tsukuba.ac.jp/satellites_status/• 1Dサテライト： 平⽇ 8:30 ‒ 18:00• 図書館サテライト：図書館の開館時間に準ずる• 中央図書館： 平⽇ 8:30 ‒ 22:00 、休⽇ 9:00 ‒ 20:00

レポート
レポート
• 成績評価はレポート(3回程度)で⾏います。
• レポートは講義資料のページ(https://wwwnucl.ph.tsukuba.ac.jp/~hinohara/compphys2-22/)に掲載予定。
• レポートはmanabaで提出。

講義資料について• ホームページ掲載の資料は削除しません(必要に応じて修正します)。
• Streamの講義動画も2022年度中は削除しません。
• 資料を印刷する必要はありません。(印刷を想定して作っていません)わからない・うまく⾏かない場合：検索• Linuxは多くの⼈が使っているためインターネットに⼤量の情報があります。
(数値計算についてはそんなにないかも)• 検索が上⼿な⼈ほど使いこなすのが早いです。
• サテライト室のLinuxにはFirefoxが⼊っていますので使いやすいように設定してください• 普段使わないコマンドの詳細は覚える必要はなく、検索するために⼗分な情報だけを覚えておきます(こういう処理をするにはこのコマンドということだけ覚えておく)• Linux初⼼者向けの参考書：新しいLinuxの教科書(三宅英明・⼤⾓祐介、SB Creative)わからない・うまく⾏かない場合：質問• 他の物理の授業では⾃分で考えることも⼤事なのでなかなか質問しないかもしれません。この授業では調べてもわからないものはどんどん質問してください。聞いてしまったほうが早く解決することが多いです。
• 授業時間内に巡回しますので質問してください。対応する授業回の質問である必要はありません。
• 授業時間外も質問してください。Microsoft Teamsのチャットまたはメール• レポート問題の質問も歓迎。

Linux• Linux(リナックス)とは？
• OS(オペレーティングシステム)の⼀つ。
• OSの例：Windows, Mac OS, Unix (UnixとLinuxは(異なるが)ほぼ同じ)• 多くのディストリビューション(種類)• 例：CentOS(セントオーエス), RedHat, Ubuntu(ウブントゥ), Debian• どこでLinuxが使えるか？
• 学術情報メディアセンターのLinux• サテライト室で利⽤• リモートログインで⾃宅の端末から利⽤• 家のコンピュータで使う• Windows 10- WSL (Windows Subsystem for Linux)でLinuxのインストールが可能• Mac - Linuxではないが、ターミナルの操作はLinuxとほぼ同じ

Linuxはどこで使われているか？
• Linuxは(特に初⼼者には)やさしくなく使いにくい• 個⼈のパソコンはWindows/Macが主流• 物理学の研究では昔からLinuxがよく使われている• スーパーコンピュータはLinuxで動いている• 2020年６⽉に世界⼀のスパコンになった富岳はRedhat Linuxで動いている• 遠隔地のコンピュータの操作にLinuxは向いている• ⾃宅から研究室のコンピュータを操作• 学外の施設のコンピュータを学内から操作• スーパーコンピュータを使った計算(授業と同じリモートログインで使⽤する)• コロナ等で⼤学が閉鎖された場合• サーバ(webサーバ、メールサーバなど)のOSはLinuxが主流

第１回授業の内容• 全学計算機システムのLinuxにログイン• Linuxを使って慣れる• 端末を使ってみる• Linuxを終了する

Linuxの開始・終了

ユーザ名：s+学籍番号の下7桁
パスワード：統⼀認証パスワード

ブラウザ・端末
ブラウザ：Firefoxが⼊ってます• manabaや講義のページ、検索サイトなどをブックマークに追加してください

端末の起動
デスクトップで右クリック
端末を開く(E) をクリック

端末を起動
ログインしているコンピュータの名前(ホスト名)

このコンピュータでのユーザ名
皆さんはs1234567の形式

コンピュータの中で今いる位置(カレントディレクトリ)(~はホームディレクトリを表す)

プロンプトの表⽰内容は設定ファイルで変更可能。
(皆さんのプロンプトが上の形式ではない可能性もあります)$しか表⽰されないものもある。$より右側がコマンド⼊⼒領域

シェル
シェル(殻)：ユーザからのコマンド⼊⼒を受け付けるシステム
コマンドの処理はカーネル(コンピュータの⼼臓部)が実⾏
Linuxの操作はシェルを通して⾏われる
シェルはユーザー・インターフェース
コマンド実⾏

コマンド⼊⼒ユーザ

カーネル(処理を実⾏)

シェル
結果を表⽰

結果を返す

シェルの種類： sh, bash, csh, tsch, zsh ...
(bash(バッシュ)が標準的。新しいMac OSはzshがデフォルト)
シェルによってコマンド、書き⽅が多少異なるいくつかの基本コマンドコマンドを⼊⼒してみましょう。キーボードでコマンドを⼊⼒後Enterキーを押すとシェルにコマンドが渡され、実⾏結果が画⾯に表⽰されます。
hostname いまログインしているホスト名を表⽰する
ホスト名がシェルから返される
pwd 今いるディレクトリ(カレントディレクトリ)の場所(絶対パス)を表⽰する(print/positioning working directory)
絶対パス(後述)
who 誰がログインしているのか表⽰する(他のユーザも表⽰されます)
ユーザ名
date 現在⽇時を表⽰する

端末の種類(ssh端末)

cal 今⽉のカレンダーを表⽰する

ログイン⽇時ログイン元ホストのIPアドレス

Linuxのディレクトリ構造
ディレクトリ：ファイルやディレクトリを複数格納する場所(Windows・Macのフォルダと同じ)ツリー構造：Linuxのディレクトリはルートディレクトリ(/) を頂点とするツリー構造
ディレクトリの場所はルートディレクトリからの場所で⼀意に指定できる(絶対パス)
WindowsだとCドライブなどがルートディレクトリに相当(C:\)
bin←このディレクトリの絶対パスは /binetc
ルートディレクトリ/(スラッシュ”/”で表す)↓このディレクトリの絶対パスは/home/s1234567

homes1234567

libs1234568

usrs1234569

var

....

....

ディレクトリ(home)の中にあるファイル・ディレクトリを指定するときも/で区切る

ルートディレクトリ

Linuxのディレクトリ構造
ほとんどの作業はホームディレクトリかそれより下層ディレクトリで⾏う
ユーザにはホームディレクトリ以下でファイル・ディレクトリの変更の権限がある
カレントディレクトリ(現在作業中のディレクトリ)からの相対パスを⽤いるのが便利
カレントディレクトリがホームディレクトリの場合
project1
compphys2
project2
ホームディレクトリ

Desktopproject3

s1234567
カレントディレクトリ
(カレントディレクトリは“.” (ドット⼀つ)で表す)

Documents

Pictures

ホームディレクトリから⾒てこのディレクトリは相対パスで Desktop
または“.” を使って ./Desktop でもよい

project4

ホームディレクトリ(s1234567)から⾒て、このディレクトリは相対バスでcompphys2/project4 または ./compphys2/project4
絶対パスではないので頭に/はつけないLinuxのディレクトリ構造
ほとんどの作業はホームディレクトリかそれより下層ディレクトリで⾏う
カレントディレクトリ(現在作業中のディレクトリ)からの相対パスを⽤いるのが便利
カレントディレクトリがcompphys2の場合
カレントディレクトリ
“.”project1
compphys2
project2

ホームディレクトリ

Desktopproject3

s1234567
カレントディレクトリの⼀つ上のディレクトリ(親ディレクトリ)なので“..“で指定できるDocuments

Pictures

カレントディレクトリから⾒てこのディレクトリは相対パスで../Desktop(⼀つ上のディレクトリは .. で表す).. はこの場合はs1234567ディレクトリになる)

project4

カレントディレクトリ(compphys2)から⾒て、このディレクトリは相対バスでproject4 または ./project4

演習• 講義資料を⾒て演習 (https://wwwnucl.ph.tsukuba.ac.jp/~hinohara/compphys2-22/)• ファイル・ディレクトリ操作• ディレクトリ・ファイルの表⽰(ls)、ディレクトリ作成(mkdir)、削除(rmdir)、ファイル作成(touch)、削除(rm)、mv(ファイル・ディレクトリ移動・名前変更)、cp(コピー)• ディレクトリ移動• cd(ディレクトリ移動)、pwd(カレントディレクトリ表⽰)• ファイル表⽰• cat, less (テキストファイルの内容表⽰)• その他• yes(yes出⼒)、history(コマンド⼊⼒履歴表⽰)、hostname、date, cal (⽇付・カレンダー), who(ログインユーザ表⽰)• man (コマンドマニュアル表⽰)• 強制終了、⼊⼒履歴、タブ補完、ワイルドカード、• 隠しファイル、ディレクトリ・シンボリックリンク

ディレクトリの⼀覧表⽰・作成(演習)ls ファイル名またはディレクトリ名：ディレクトリの中にあるファイル・ディレクトリの⼀覧を表⽰(list)
実際に実⾏してみましょう。

指定したディレクトリ(指定しなければカレントディレクトリ)に⼊っているファイル・ディレクトリの⼀覧が表⽰される。
(/で終わっている名前はディレクトリ。/が表⽰されない場合はlsの代わりに ls ‒Fを実⾏。)
現在いるディレクトリはプロンプトに表⽰されている。
またはpwdコマンドで確認。ホームディレクトリは~とも書かれる (~ = /home/ユーザ名)
mkdir ディレクトリ名 ：ディレクトリを作成 (make directory)
compphys2という名前のディレクトリをカレントディレクトリに作成 (mkdir ディレクトリ名)

lsで再度確認するとcompphys2ディレクトリが出来ていることがわかる
コマンドに続いてファイルまたはディレクトリ名を⼊⼒するときはコマンドの後にスペースを⼊れるディレクトリの移動・削除(演習)cd 移動先のディレクトリ ：ディレクトリの移動 (change directory)
移動先のディレクトリを指定しない場合はホームディレクトリに移動
今作成したcompphys2ディレクトリに移動します (cd 移動先ディレクトリ)
最後のスラッシュはあってもなくてもよい。

cdコマンドは移動に成功したときは何も出⼒しない。
プロンプトに表⽰されるカレントディレクトリを⾒るか、pwdで確認。
新しく作成したディレクトリなのでls で確認すると中には何も⼊っていないことがわかる。

rmdir ディレクトリ名：ディレクトリの削除 (remove directory)
⼀つ上の親ディレクトリは“..” cd .. でcompphys2の⼀つ上であるホームディレクトリに移動

compphys2ディレクトリを削除

compphys2が削除されている

ファイル作成・削除(演習)
演習の作業はホームディレクトリではなく適当なディレクトリを作って中で⾏うとよい。
touch ファイル名 : 空のファイルを作成(通常ファイルを作成するときに使うコマンドではないがファイル操作の練習のため使⽤)ファイルが作成されていることを確認

testfileという名前のファイルを作成
touchとtestfileの間にスペースが必要

rm ファイル名 ：ファイルを削除 (remove)
ファイルが存在

testfileを削除

y (yes)またはn (no)を⼊⼒
testfileが削除された

bashの設定によっては削除するかどうか確認されない。rm ‒i を実⾏すると毎回確認。
ゴミ箱はなく削除後は元に戻せないので注意ファイルの移動・名前変更(演習)mv 移動元パス

移動先パス：ファイルやディレクトリを移動します(move)←先にディレクトリとファイルを作ってください。
移動元ファイルと移動先ディレクトリは相対パスまたは絶対パスで指定
dir1ディレクトリの中にtestfileが移動

mv 現在のファイル 新しいファイル：ファイルやディレクトリの名前を変更
testfileをカレントディレクトリに戻す
名前の変更
testfile1の名前がtestfile2に、dir2の名前がdir3に変わっている
移動と名前の変更を同時に⾏うこともできる
すでに存在するファイルなどを指定すると上書きされる。mv ‒i を実⾏すると上書きの確認がされる。

ファイル・ディレクトリのコピー(演習)cp ファイル１

ファイル２：ファイル１をファイル２にコピー(copy)

testfile5としてtestfile1のコピーが作成される
dir1にファイルが⼊っている場合(⼊ってなければtouchで作ってください)
ディレクトリをコピーする場合は“‒r”オプションをつける
ディレクトリの中⾝もコピーされる-rをつけないとディレクトリはコピーされない

すでにコピー先に同名のファイルがある場合は上書きされる。
bashの設定によっては確認されずに上書きされるのでcp ‒i を実⾏すれば必ず上書きの確認がされる。

ファイルの⼊ったディレクトリの削除(演習)rmdirは中に何も⼊っていないディレクトリの削除が可能
中にファイルが⼊ったディレクトリの削除はrm ‒rコマンドで⾏う

中にファイルの⼊ったディレクトリ
rmdirでは削除出来ない
rmではディレクトリは削除できない-rオプションで削除可能

y (yes)で削除を進める(設定によっては確認されないので注意)
dir1が削除された

テキストファイルの中⾝を表⽰する(演習)cat ファイル名 : テキストファイルの中⾝を表⽰する(catenate, サイズの⼩さいファイル向け)

絶対パスで/etcにあるファイルを表⽰

hostnameファイルの記述内容(ホスト名だけが書いてある)shellsファイルの記述内容(システムで使えるシェルのリスト)/etcにはLinux全体の設定ファイルが⼊っている(内容は理解できなくてよい)テキストファイルの中⾝を表⽰する(演習)less ファイル名 : テキストファイルの中⾝を表⽰する(サイズの⼤きなテキストファイル⽤)
CPU情報が参照できるファイル
⾏数が多いのでcatで⾒ると画⾯上を流れてしまう
上下カーソルで表⽰位置の移動
fまたはスペースで⼀画⾯下にスクロール
bで⼀画⾯上にスクロール
qで終了/ を⼊⼒後⽂字列を⼊⼒してEnterで⽂字列の検索が可能コマンドライン⼊⼒のヒント
lsは何回も使う
Windowsのエクスプローラーでは⼀覧が表⽰されているが、コマンドラインのLinuxではlsを打たないとどんなファイル・ディレクトリがあるかもわからない。
次にやることが思いつかなかったらとりあえずls。ディレクトリを移動したらまずはls
同じようなコマンド・前に使ったコマンドを何回も使う場合・前にちょっとだけ⼊⼒を間違えた場合
上⽮印キーで直前、その前、・・・に⼊⼒したコマンドが呼び出せる
⼊⼒中のコマンドの修正をする場合
左⽮印でカーソルの位置を戻すことができる。右⽮印も使える。
修正したい箇所がコマンドの先頭付近で左⽮印で戻すのが⾯倒な場合
Ctrlキーを押しながらa (C-aと表記する)で先頭にカーソルが戻る
コマンドラインの末尾まで⼀気に戻りたい場合
C-eで末尾に移動
いま⼊⼒中のものを消して(なかったことにして)最初から⼊⼒しなおしたい場合
C-cで現在の⼊⼒が全部消えて新しい⾏が表⽰される

コマンドライン⼊⼒のヒント(強制終了)• ⼊⼒したコマンドが⾃動的に終了しなくてシェルが使えなくなった場合は
C-c (Ctrlキーを押しながらc)で強制終了• 例：yesコマンド (ひたすらyを画⾯に出⼒し続けるだけのコマンド)ｙが出⼒され続ける

C-cで強制終了

今後⾃分でプログラムを書いたときに起こることがあるので覚えてください。

コマンドライン⼊⼒のヒント(タブ補完)
historyというコマンドを打ってみる
このコマンドはこれまで⼊⼒したコマンドのリストを出⼒(実⾏してみてください)

historyと全部⼊⼒せず、histo まで⼊⼒してTabキーを押すと⾃動的に残りの ryが補完される

hist まで⼊⼒してTabキーを押すと何も起こりませんが、もう⼀度Tabキーを押すとhistではじまるコマンドの候補が表⽰されます

コマンド・ファイル名・ディレクトリ名などは⼀部だけ⼊⼒してタブ補完を使うことで⼊⼒量を減らすことができる。

コマンドライン⼊⼒のヒント(タブ補完)
ディレクトリを移動したいがどんな名前のディレクトリかわからない場合はlsで調べるのが基本だが、タブ補完も使える
ルートディレクトリに移動
cd スペース⼊⼒後にTabキーを2回押す

ここでTabキーを2回押す

移動先ディレクトリの候補が表⽰される

cd、スペースを⼊⼒後Tabキーを2回押すとカレントディレクトリ直下のディレクトリのリストが表⽰される
cd etc/でTabキーを2回押すと同様にリストが表⽰されるが候補数(166)が多いためすべて表⽰したいかどうかを聞かれる(この場合は数⽂字⼊れて絞れるなら絞ってからタブ補完を使えばよい)
出てきた候補はmoreというコマンドの形式で表⽰ (enterでスクロール、qで終了)

コマンドライン⼊⼒のヒント(タブ補完)
ディレクトリに⻑い名前のファイルがある場合

スペースのあとTabキーを押す
コマンド＋スペースを⼊⼒後タブを押すと⾃動的にfileが補完される(コマンドの後にはファイル名を⼊⼒するはずであり、このディレクトリにあるファイル名はすべてcompphys2_projectfile_2021Octで始まっているため)⾃動で補完される
Tabを2回押すと候補を表⽰
コマンド・ファイル・ディレクトリのどれでも⼊⼒の途中でTabキーを押すことで⼊⼒量を減らすことが可能です。普段からTabキーを様々なタイミングで押してください。

コマンドライン⼊⼒のヒント(ワイルドカード)
シェルでは*は任意の⽂字列を表す/etcディレクトリの中で a*bにマッチするファイル (ファイル名がaで始まってbで終わるもの)の⼀覧を表⽰

compphys2ディレクトリの中で拡張⼦が.txtのファイルの⼀覧を表⽰
compphys2ディレクトリの中のすべてのファイルを削除
実⾏するときは⼗分に注意してください(ファイル⼀つ⼀つについて削除してよいか確認がない設定かもしれません)
lsなどで候補が多すぎる場合はワイルドカードなどを使ってみたいものだけに絞る
また、すべてのファイルに対して同じ操作を⾏う場合も使える。

コマンドライン⼊⼒のヒント(ワイルドカード)
シェルでは?は任意の⼀⽂字を表す
file＋1⽂字と⾔う名前のファイルの⼀覧
file+1⽂字+3という名前のファイルが表⽰される(file13のみ)*は0⽂字も含むため file3も該当コマンドのマニュアル
webで調べてもよいが、manコマンドでコマンドの詳細な使い⽅が調べられる
lsコマンドのマニュアルを表⽰

マニュアルの画⾯の操作はlessと同じ
上下カーソルで表⽰領域を移動、qで終了隠しファイル、ディレクトリ(発展内容)“.” から始まるファイルは隠しファイル、ディレクトリでlsでは表⽰されない。
表⽰するにはlsで ‒aオプションをつける

カレントディレクトリと親ディレクトリも含まれる

これらのファイル・ディレクトリには様々なプログラムの設定情報が格納されている。
例えば .sshディレクトリはsshの設定ファイルが⼊っており公開鍵認証で使う

シンボリックリンクの作成(発展内容)
ln ‒s リンク元のファイル シンボリックリンクファイル：シンボリックリンクを作成(Windowsのショートカットと同じ)
dirという名前でdir2へリンクした
シンボリックリンクを作成(相対パスまたは絶対パスで記述)
シンボリックリンクは名前のあとに@が表⽰される
dir2の中⾝にアクセスできる
パスはシンボリックリンクのdirとなる
dirにファイルを追加すると元のディレクトリからも同様に⾒える

シンボリックリンクの削除はrmコマンドで⾏うキーボード⼊⼒のヒント(発展内容)
ホームポジション
キーボードのFキーとJキー(突起がついています)に左右の⼈差し指を置いた状態
ホームポジションからあまり指を⼤きく動かさずに⼊⼒をするのが早く⼊⼒する基本。
タイピングゲームなどで練習できる。
そのためホームポジションから離れたキーはなるべく使わないほうがよい。
特に消去キーと⼗字キーについてはショートカットを使う。
backspace (消去)delete (消去)
↑⽮印
↓⽮印
←⽮印
→⽮印

C-h(Ctrlキーを押しながらh)C-dC-p (previous)
C-n (next)C-b (backward)
C-f (forward)