計算物理学II 第2回

今回の内容• Linuxの基本的なコマンドを使えるようになる• シェル・ディレクトリ構造について理解するまずはLinuxにログイン• 第１回で設定した⽅法でLinux (physicslinux1, physicslinux2)にログイン• 個⼈で⾃分のコンピュータにLinuxを⼊れた⼈はそれを使ってもOK• その代わり必要なソフトウェアは⾃分でインストールしてください。
• プロンプトが表⽰される

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

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

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

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

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

コマンド⼊⼒ユーザ

カーネル(処理を実⾏)

シェル
結果を表⽰

結果を返す

シェルの種類： sh, bash, csh, tsch, zsh ...
(bash(バッシュ)が標準的。新しいMac OSはzshがデフォルト)
シェルによってコマンド、書き⽅が多少異なるいくつかの基本コマンドコマンドを⼊⼒してみましょう。キーボードでコマンドを⼊⼒後Enterキーを押すとシェルにコマンドが渡され、実⾏結果が画⾯に表⽰されます。
hostname いまログインしているホスト名を表⽰する

プロンプトに⼊⼒してenter

ホスト名がシェルから返される
pwd 今いるディレクトリ(カレントディレクトリ)の場所(絶対パス)を表⽰する(print/positioning working directory)
絶対パス(後述)
who ⾃⾝のユーザ情報を表⽰する
ユーザ名
date 現在⽇時を表⽰する

端末の種類(ssh端末) ログイン⽇時

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

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

Linuxのディレクトリ構造
ディレクトリ：ファイルやディレクトリを複数格納する場所(Windows・Macのフォルダと同じ)ツリー構造：Linuxのディレクトリはルートディレクトリ(/) を頂点とするツリー構造
ディレクトリの場所はルートディレクトリからの場所で⼀意に指定できる(絶対パス)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

ディレクトリの⼀覧表⽰・作成
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という名前のファイルを作成
ファイルが作成されていることを確認

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

testfileを削除

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

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

移動先パス：ファイルやディレクトリを移動します(move)
移動元ファイルと移動先ディレクトリは相対パスまたは絶対パスで指定

dir1ディレクトリの中にtestfileが移動

mv 現在のファイル 新しいファイル：ファイルやディレクトリの名前を変更

testfile1の名前がtestfile2に、dir2の名前がdir3に変わっている

移動と名前の変更を同時に⾏うこともできる
すでに存在するファイルなどを指定すると上書きされる。mv ‒i を実⾏すると上書きの確認がされる。

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

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

testfile5としてtestfile1のコピーが作成されるディレクトリをコピーする場合は“‒r”オプションをつける
ディレクトリの中⾝もコピー-rをつけないとディレクトリはコピーされない
すでにコピー先にファイルがある場合は上書きされる。
bashの設定によっては確認されずに上書きされるのでcp ‒i を実⾏すれば必ず上書きの確認がされる。

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

中にファイルの⼊ったディレクトリ
rmdirでは削除出来ない
rmではディレクトリは削除できない-rオプションで削除可能
y (yes)で削除を進める(設定によっては確認されないので注意)
dir1が削除された

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

絶対パスで/etcにあるファイルを表⽰
crontabファイルの記述内容/etcにはLinux全体の設定ファイルが⼊っている(内容は理解できなくてよい)
hostnameにはこのコンピュータのホスト名が、crontabは定時実⾏の設定が書かれている

テキストファイルの中⾝を表⽰する
less ファイル名 : テキストファイルの中⾝を表⽰する(サイズの⼤きなテキストファイル⽤)
CPU情報が格納されているファイル
サイズが⼤きいのでcatで⾒ると画⾯上を流れてしまう
上下カーソルでカーソルの位置の移動
fまたはスペースで⼀画⾯下にスクロール
bで⼀画⾯上にスクロール
qで終了/ を⼊⼒後⽂字列を⼊⼒してEnterで⽂字列の検索が可能

コマンドライン⼊⼒のヒント
lsは何回も使う
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で調べるのが基本だが、タブ補完も使えるルートディレクトリに移動
ここでTabキーを2回押す

移動先ディレクトリの候補が表⽰される
ここでTabキーを2回押す

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

コマンドライン⼊⼒のヒント(タブ補完)
ディレクトリにはfileから始まるファイルやディレクトリしかない場合

コマンド＋スペースを⼊⼒後タブを押すと⾃動的にfileが補完される(コマンドの後にはファイル名を⼊⼒し、このディレクトリのファイルはすべてfileで始まっているため)

Tabを2回押すと候補を表⽰
コマンド・ファイル・ディレクトリのどれでも⼊⼒の途中でTabキーを押すことで⼊⼒量を減らすことが可能です。普段からTabキーを様々なタイミングで押してください。

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

compphys2ディレクトリの中で拡張⼦が.txtのファイルの⼀覧を表⽰

compphys2ディレクトリの中のすべてのファイルを削除
実⾏するときは⼗分に注意してください

lsなどで候補が多すぎる場合はワイルドカードなどを使ってみたいものだけに絞る
また、すべてのファイルに対して同じ操作を⾏う場合も使える。

コマンドライン⼊⼒のヒント(ワイルドカード)
シェルでは?は任意の⼀⽂字を表す

file＋1⽂字と⾔う名前のファイルの⼀覧
file+1⽂字+3という名前のファイルが表⽰される(file13のみ)*は0⽂字も含むため file3も該当

練習問題• ホームディレクトリにexerciseディレクトリを作る• その中にproject1, project2ディレクトリを作る• project1の中に/proc/cpuinfoをコピーしてcpu.txtというファイル名に変更する• cpu.txtファイルを表⽰してこのホストのCPU情報を⾒る(model nameというエントリーに書かれています)
CPUの型番は何でしたか。

練習問題• project1ディレクトリを(中⾝も含めて)project3という名前にコピー• project2ディレクトリに/proc/meminfoをコピー• meminfoにはホストのメモリ情報が書かれています。メモリサ
イズは何kBですか(MemTotalエントリにかかれています)、また何GBですか (1MB=1024kB, 1GB=1024MB)

練習問題• cdとlsを使ってLinuxのディレクトリを探索してみる。
• ホームディレクトリにあるDesktop, Documentsなどはサテラ
イト室のWindowsコンピュータからも⾒えるディレクトリです。
これまでにサテライト室のWindowsを使っていた⼈は覚えているファイルが無いか探してみてください。
• /bin 基本的なコマンドが置いてあります。知っているコマンドをいくつ⾒つけられますか。

隠しファイル、ディレクトリ(発展内容)“.” から始まるファイルは隠しファイル、ディレクトリでlsでは表⽰されない。
表⽰するにはlsで ‒aオプションをつける

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

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

シンボリックリンクの作成(発展内容)
ln ‒s リンク元のファイル シンボリックリンクファイル：シンボリックリンクを作成(Windowsのショートカットと同じ)
dirという名前でdir2へリンクした
シンボリックリンクを作成
シンボリックリンクは名前のあとに@が表⽰されるdir2の中⾝にアクセスできる
パスはシンボリックリンクのdirとなる

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

C-h
C-d
C-p (previous)
C-n (next)C-b (backward)
C-f (forward)