roy > naoya > 基礎プログラミングI·情報検索 > (1)UNIXの操作
(1) 04/12の授業内容:UNIXの操作
[1] 101/102教室の端末について
101/102教室に設置されているのはSunRayというシンクライアントであり、ネットワークへの接続機能やディスプレイへの表示機能などの最低限の機能を備えた端末である。実際に稼動しているのはサーバールームにあるpanという名称のコンピュータであり、Solaris10というOSを使用している。教室内の端末からの命令はpanで処理され、処理結果が目の前のディスプレイに表示されている。目の前の端末にはハードディスクもなく、作成したデータもpanに保存される。つまり、授業中には一度に多数の人がpanという1台のコンピュータを共有して使用していることになる。

それゆえ、どの端末を使用してもpanに保存された自分のデータにアクセスすることができる。しかし、そのためには使用するのが誰であるのかをpanに明示する必要があるし、使い終わった際には次の人が使えるように終了手続きを踏む必要がある。これがログインとログアウトという操作になる。
[2] ログイン・ログアウト・3種類のウィンドウ(フォーカスと切り替え)
ログイン
- ログイン:教室内にある端末(コンピュータ)の利用開始手続き
 - 初めてログインを行う場合のみ、オプションからセッションでFVWMウィンドウマネージャを選択(ここでデスクトップ環境を設定)
- FVWMウィンドウマネージャを選択すると下の図の右側のように入力欄の下に「FVWMウィンドウマネージャ」と表示される
 - この操作は一度行うと記憶されるので、最初の1回だけ実施すればよい
 
 - ユーザ名とパスワードを入力する(それぞれ入力後[Return]キーを押す)
- ユーザー名:チェックディジットを除いた学籍番号(cは小文字)
 - パスワード:Windows/royと同じ(2008年度入学生以降)
 - パスワードは入力をしても画面に表示されない
 
 
ログイン時のユーザー名とパスワード
- ユーザー名:チェックディジットを除いた学籍番号(cは小文字)
 - パスワード:Windows/royと同じ(2008年度入学生以降)
 
3種類のウィンドウ
- ログインをすると3つのウィンドウが自動的に表示される
- ログインできない場合は、ユーザー名かパスワードが間違っているので、もう一度入力しなおす
 
 - 3つのウィンドウの名称と働きは次の通り
 
ウィンドウの名称とタイトル
- kterm(緑色):ファイルのコピーや移動、これから学ぶRubyプログラムの実行操作などを行う。
 - emacs(黒色):1年生の授業で使用していたものと同じ。mew(メール)やプログラムの作成に使用する。1年次はkterm内でemacsを起動させていたが、ここでは両者が独立して存在している。
 - console(灰色):ログアウトのときに使用する。
 
FVWMウィンドウマネージャは、デスクトップにアイコンを持っていない。これらのウィンドウでコマンドを入力することでフォルダを開いたり、アプリケーションを起動したりすることができる。
ログアウト
- ログアウト:利用終了手続き。ログアウトにはconsoleを使用する
- ログアウトを行わないまま席を離れると、作成したファイルを第三者に閲覧されたり削除される可能性がある
 
 - consoleウィンドウ上部のバーをマウスでクリックし、consoleを前面に出す
- 最初から書かれている文字列({c10xxxx}の部分は自分の学籍番号)をプロンプトと呼ぶ
pan{c10xxxx}% - プロンプトが出ていれば、ユーザはコンピュータに対し指示を送ることができる(基本的には常に出ている)
 
 - 最初から書かれている文字列({c10xxxx}の部分は自分の学籍番号)をプロンプトと呼ぶ
 - キーボードから、exit[Return]と入力
 - 正しく入力すれば、初期のログイン画面に戻り、ログアウト完了
pan{c10xxxx}% exit[Return] 
フォーカス
- マウスカーソルを各ウィンドウ内に移動すると、ウィンドウ枠の色が変わる
 - 色の変わったウィンドウをフォーカスの合ったウィンドウと呼ぶ
 - キーボードからの入力は、フォーカスの合ったウィンドウに対して行われる
- フォーカスがどのウィンドウにも合っていなければ入力できない
 - ウィンドウが背面にあってもフォーカスが合っていれば入力できる
 
 
ウィンドウの切り替え
- ウィンドウの切り替えはキーボードのショートカットキーで行うこともできる
 - ショートカットキーを使って切り替えると、切り替えたウィンドウに必ずフォーカスが合うので便利
 
ショートカットキーを用いたウィンドウの切り替え
- Ctrl+1:emacsが前面に出る(フォーカスも合う)
 - Ctrl+2:ktermが前面に出る(フォーカスも合う)
 - Ctrl+3:consoleが前面に出る(フォーカスも合う)
 - Ctrl+4:Firefoxが前面に出る
 
注:Ctrl+1はCtrlキーを押しながら1を押すという意味
[3] コンピュータ操作方法(ルートメニューとコマンド)
ルートメニュー
- ウインドウ以外のデスクトップの背景部分で左クリックをすると表示されるメニュー
 - 頻繁に使用するアプリケーションのみ格納されている
 - 使いたいアプリケーションを選択すると起動する
 
この授業で使用するソフトウェアは以下の通り。
- kterm:最初から起動している。複数起動したい場合に利用
 - Emacs:最初から起動している。複数起動したい場合に利用
 - Emacs24:文字サイズが大きなEmacs。通常のEmacsでは文字が小さい人向け
 - Kterm24:文字サイズが大きなkterm。通常のktermでは文字が小さい人向け
 - Firefox(3.5):ブラウザ。授業はWebページを使って行う。
 - Firefox(強制再起動):ブラウザが起動しなくなってしまった場合に使用。
 - OpenOffice.org3:Officeソフト。Microsoft Officeと同じ。互換性あり
 - GIMP2:ペイントソフト。Adobe Photoshopと同じ。グラフィックス内にある
 - Tgif:ドローソフト。Adobe Illustratorと同じ。グラフィックス内にある
 
コマンド入力によるコンピュータの操作
コマンドとは、コンピュータに対して行う命令であり、あらかじめ規定の文字列が定められている。コマンドを実行する場合、コマンド名[Return](コマンド入力後Returnキーを押す)が原則となる。
まとめ
- よく使うアプリケーションはルートメニューから起動できる
 - その他のファイル操作はktermでコマンドを入力して実行する
 
[4] ブラウザの起動
授業は、Webページを使いながら進める。授業用ページのURLは
http://roy.e.koeki-u.ac.jp/
である。
Webページを閲覧するためのブラウザはFirefoxを使用する。Firefoxの起動方法は次の2種類。
- ルートメニューからFirefox(3.5)を選択
 - ktermでFirefox起動コマンドを入力
 
pan{c10xxxx}% firefox &[Return]
ソフトウェアの起動をktermから行う場合、
ソフトウェア名 &[Return]
となる。&をつけなくても起動できるが、起動中はktermを使用することができなくなる。&をつけると、ソフトウェアを利用しながらktermも使用することができる。
次に、URLを指定して授業用ページを確認する。Ctrl+l で、アドレスバーにカーソルが移動するのでhttp://roy.e.koeki-u.ac.jpと入力し、[Return]で授業用ページが表示される。
Firefoxの終了はCtrl+w。メニューバーのFileからQuitを選んでも良いが、ショートカットキーを使用したほうが効率的である。
まとめ
- ktermでfirefox &[Return]:Firefoxの起動
 - Ctrl+l:アドレスバーへのカーソルの移動
 - Ctrl+w:Firefoxの終了
 
[4] ファイルリスト表示コマンド(ls)
- lsコマンドは現在のディレクトリ(カレントディレクトリ)内にあるファイルやディレクトリ一覧を表示するコマンド
- lsはlistの略
 - ディレクトリはWindowsでいうフォルダのこと
 - Windowsではフォルダの中身はフォルダを開いている限り常に確認可能だが、FVWMウィンドウマネージャではlsコマンドを入力しなければ確認することができない
 
 - lsコマンドはls[Return]で実行。コマンド入力後に[Return]キーを押す
 - するとファイルやディレクトリの一覧が表示される
pan{c10xxxx}% ls[Return] Mail/ maildir/ public_html/ Windows/ msmail/ script/ - 表示されたリストのうちMail/のように/がついているものはディレクトリをあらわす。/がついていないものはファイルをあらわす
- 上の例では、Mail/、maildir/、public_html/、Windows/、msmail/、script/の6つのディレクトリがあり、ファイルはひとつもない
 - これらの最初からあるディレクトリは名称を変更したり削除したりしないこと。
 - 名称変更や削除をすると、メールが読めなくなったり、Windowsのzドライブに保存したデータが消えてしまう
 
 - UNIXでは大文字と小文字を区別する。例えば、lsのかわりにLSと入力すると、「そんなコマンドは見つからない」と表示され、コマンドは実行されない。
pan{c10xxxx}% LS[Return] zsh: command not found: LS 
まとめ
- ls[Return]はディレクトリ(フォルダ)の中身を表示するコマンド
 - 名称の後ろに/がついているものはディレクトリ、なければファイル
 - コマンドは大文字と小文字を区別する
 
[5] ディレクトリの作成と移動コマンド(mkdir、cd)
ファイルのルール
- 作成した文書やプログラムはファイルとして保存される
 - 1つのファイルには必ず1つのファイル名がつく(Windowsと同じ)
 - コマンドの場合と同様、ファイル名も大文字と小文字は区別される
- kadai.txtとKadai.txt、KADAI.txtは全て別のファイルになる
 
 
ディレクトリのルール
- ディレクトリはファイルを整理するための箱
 - ディレクトリ=フォルダなので、Windowsでフォルダを作ってその中にファイルを入れるのと同じ
 - ディレクトリ名も大文字と小文字を区別する
 
ディレクトリの作成
- 今後授業で作成するプログラムを保存するRubyディレクトリを作成する
 - ディレクトリ作成のコマンドはmkdir
- mkdirはMake Directoryを省略したもの
 
 - mkdirコマンドは、mkdir ディレクトリ名[Return]で実行
- 「ディレクトリ名」の部分に作成したいディレクトリの名前を入れる
 - コマンド名とディレクトリ名の間は半角スペースをあける
pan{c10xxxx}% mkdir program[Return] #=>mkdir+作成したいディレクトリ名 
 - ls[Return]で、ディレクトリが作成されているか確認する
- mkdirはディレクトリを作成するだけのコマンドであるため、作成されたかどうか確認するためには、lsコマンドを使用する。
 - mkdirコマンドを正しく入力していれば、program/ができている
pan{c10xxxx}% ls[Return] Mail/ program/ maildir/ public_html/ Windows/ msmail/ script/ 
 
ディレクトリの移動
- cdコマンドを使用するとディレクトリの移動ができる
- cdはChange Directoryの略
 - Windowsであれば、フォルダをダブルクリックで開く操作に相当
 
 - cdコマンドの基本的な用法は次の通り
pan{c10xxxx}% cd ./移動先ディレクトリ[Return]- ./は自分が今いるディレクトリ(カレントディレクトリ)をあらわし、省略可能
 - コマンド名とディレクトリ名の間は半角スペースをあける
 
 - programディレクトリに移動するためには以下のいずれかを入力する。
pan{c10xxxx}% cd ./program[Return] [~] pan{c10xxxx}% [~/program]pan{c10xxxx}% cd program[Return] [~] pan{c10xxxx}% [~/program]- ktermは右端にカレントディレクトリ名を表示するので、移動できたかどうか確認できる
 - [~]はこれは各ユーザーが自分のデータをおくことが出来る最上層のディレクトリをあらわし、ホームディレクトリと呼ぶ(Windowsでいうマイドキュメント)
 - ログイン時は必ずホームディレクトリにいる
 
 - programディレクトリからホームディレクトリに戻る際は、cd ..[Return]と入力する
- programディレクトリはホームディレクトリの中にあるため、ディレクトリを階層構造で表現するとホームディレクトリはprogramディレクトリの1つ上のディレクトリになる
 - 1つ上のディレクトリは..(ピリオド2つ)と表現する
 - cd ..[Return]で、1つ上のディレクトリに移動せよ、という指示になる
pan{c10xxxx}% cd ..[Return] [~/program] pan{c10xxxx}% [~] - 上の例では、ktermの右側の現在のディレクトリ表示が[~]に戻っており、programディレクトリからホームディレクトリに戻ったことがわかる
 
 
まとめ
- ファイル名・ディレクトリ名は大文字と小文字を区別する
 - mkdir hoge[Return]でhogeディレクトリが作成される
 - cd hoge[Return](またはcd ./hoge[Return])でhogeディレクトリに移動する
 - cd ..[Return](またはcd ./..[Return])で一つ上のディレクトリに移動する
 
[6] 絶対パス指定と相対パス指定(cdコマンドの応用)
ディレクトリの階層構造
- Windowsを例にとり、ディレクトリが階層構造で表現できることを確認してみよう
 - 以下の図では、デスクトップにある「フォルダ」の中に「写真」「レポート」「授業」という3つのフォルダがあり、「写真」の中に「pict1.jpg」「pict2.jpg」「pict3.jpg」という3つのファイルがある

 - これを階層構造を用いて書くと以下の図の通りとなる
- pict3.jpgは「フォルダ」の中の「写真」の中にある
 - 「写真」フォルダからみて「フォルダ」フォルダは1つ上、「フォルダ」フォルダからみて「写真」フォルダは1つ下にある
 

 - 階層構造を踏まえたファイルやディレクトリの所在地をパスといい、次のようにあらわす
- Windowsの場合:フォルダ\写真\pict3.jpg(\でつなぐ)
 - Unixの場合:フォルダ/写真/pict3.jpg(/でつなぐ)
 
 
絶対パス指定と相対パス指定
- パスの指定方法には、絶対パス指定と相対パス指定という2種類の方法がある
 - 絶対パス指定は、ホームディレクトリを基準とした指定方法である
 - 相対パス指定は、現在、自分がいるディレクトリ(カレントディレクトリ)を基準とした指定方法である
- cd ..[Return]で、1つ上のディレクトリに移動できるが、これはカレントディレクトリを基準とした相対パス指定である
 
 - 下の図で、絶対パス指定と相対パス指定について確認してみよう
- この図はディレクトリを階層構造で示したもので、~/で表記されたホームディレクトリ内にいくつかのディレクトリがあり、Ruby/ディレクトリの中にはさらにファイルとディレクトリがある
 - kadai/をカレントディレクトリとした場合、Rubyディレクトリ、ホームディレクトリの位置関係は次のようになる
- Ruby/:一つ上のディレクトリ
 - ~/:二つ上のディレクトリ
 

 
 - ここではkadai/から2つ上のディレクトリである~/に移動する方法を確認する
 
絶対パス指定
- ホームディレクトリを起点として指定をするため、kadai/から~/に移動する場合はcd ~/[Return]となる
- カレントディレクトリがどこであっても~/に移動する場合はcd ~/[Return]となる
 - カレントディレクトリがどこであっても~/Windowsに移動する場合はcd ~/Windows[Return]となる
 
 
相対パス指定(方法1):2回に分けて移動する方法
- cd ..[Return]で1つ上のRuby/ディレクトリに移動し、再度cd ..[Return]で1つ上のホームディレクトリに移動する
pan{c10xxxx}% cd ..[Return] [~/kadai] pan{c10xxxx}% cd ..[Return] [~/Ruby] pan{c10xxxx}% [~] #=>1回目のcd ..で~/Rubyに移動、2回目で~/に移動 
相対パス指定(方法2):2つ上のディレクトリに一度で移動する方法
- cd ../../[Return]もしくはcd ../..[Return]で2つ上のディレクトリに一度で移動する。ディレクトリやファイルを指定するときは/でつなぐことができる。
pan{c10xxxx}% cd ../..[Return] [~/kadai] pan{c10xxxx}% [~] #=>一度で2つ上の~/に移動 - 上位のディレクトリから下位のディレクトリに移動する際も、/でつなぎ複数階層を一度に移動できる。以下はホームディレクトリから二つ下のkadaiディレクトリに一度で移動している例である。
pan{c10xxxx}% cd Ruby/kadai[Return] [~/] pan{c10xxxx}% [~/kadai] #=>一度で2つ下の~/kadaiに移動 
相対パス指定(方法3):ホームディレクトリに移動する方法
- カレントディレクトリがどこであっても、単にcd[Return]と入力するとホームディレクトリに戻る
pan{c10xxxx}% cd[Return] [~/kadai] pan{c10xxxx}% [~] #=>どこにいてもcd[Rerutn]で~/に戻る 
まとめ
- 自分の現在位置をカレントディレクトリという
 - ディレクトリ移動時にカレントディレクトリを起点として指定する方法を相対パス指定という
 - ディレクトリ移動時にホームディレクトリを起点として指定する方法を絶対パス指定という
 - ディレクトリ移動時は/でつないで指定することで複数ディレクトリを一度に移動できる
 
[7] 練習問題
以下のようなディレクトリ構造を仮定する。カレントディレクトリをsecond/とした場合に「image/」、「memo/」、「program/」の各ディレクトリに相対パス指定で移動するためにはcdコマンドを使用して、どのように指定すればよいだろうか。 cd ..を複数回繰り返すのではなく、1回で移動できるようにパスを指定してみよう

解答は以下に白色で書かれているので、わかったらマウスで文字色を反転させて確認しよう。考える前に解答を見ないようにしよう。
- image/:cd ../image
 - memo/:cd ../../memo
 - program/:cd ../../report/program
 
[8] 出席課題
UNIXを触った感想や、いろいろなコマンドを使った感想、授業への意気込み等をメールで送る。
提出要領
- 提出先:課題提出用メールアドレス
 - Subject:ruby01
 - 本文:1行目に学籍番号と氏名を記載すること
 - 提出期限:授業終了時
 
採点:本日は出席点のみです