roy > naoya > 基礎プログラミングI·情報検索 > (1)UNIXの操作

(1) 04/14の授業内容:UNIXの操作

101/102教室の端末について

101/102教室に設置されているのはSunRayというシンクライアントであり、ネットワークへの接続機能やディスプレイへの表示機能など最低限の機能を備えた端末である。実際に稼動しているのはサーバールームにあるirsvという名称のコンピュータであり、教室内の端末からの命令はirsvで処理され、処理結果が目の前のディスプレイに表示されている。目の前の端末にはハードディスクもなく、作成したデータもirsvに保存される。つまり、授業中には一度に多数の人がirsvという1台のコンピュータを共有して使用していることになる。

それゆえ、どの端末を使用してもirsvに保存された自分のデータにアクセスすることができる。しかし、そのためには使用するのが誰であるのかをirsvに明示する必要があるし、使い終わった際には次の人が使えるように終了手続きを踏む必要がある。これがログインとログアウトという操作になる。

ログインとログアウト

101/102教室のUNIX端末を利用する際には、204/205教室のWindowsマシンを利用する場合と同様に、ログインログアウトが必要になる。ログインするためにはユーザー名とパスワードを入力する。

ログイン時のユーザー名とパスワード

  • ユーザー名:チェックディジットを除いた学籍番号(cは小文字)
  • パスワード:これから配布する用紙に記載

パスワードはランダムに生成された文字列でありこちらでは把握していない。忘れても教えられないので注意しよう。

用紙を受け取ったら実際にログインを行うことになる。最初の1回だけはオプションからセッションでFVWMウィンドマネージャーを選択後、ユーザ名[Return]、パスワード[Return]を入力する。FVWMウィンドマネージャーを選択すると右図のようにユーザ名入力欄の下に「FVWMウィンドマネージャ」と表示される。この操作は一度行うと記憶されるので、次回以降はユーザー名とパスワードを入力するだけでよい。

オプションからセッションを選びFVWMウィンドマネージャーを選ぶ

なお、パスワードは入力しても画面に表示されない。パスワードを正しく入力して[Return]キーを押すとログインできる。ログインすると3つのウィンドウが自動的に起動する。各ウィンドウの名称と働きはそれぞれ下記の通りである。いずれもウィンドウ上部に名称が書いてあるため、どれがどれに対応するか確認できるはずである。

ウィンドウの名称とタイトル

  • kterm:ファイルのコピーや移動、これから学ぶRubyプログラムの実行操作などを行う。
  • emacs:1年生の授業で使用していたものと同じ。mew(メール)やプログラムの作成に使用する。
  • console:ログアウトのときに使用する。

まずは、ログアウトをしよう。ログアウトの際に使うのはconsoleなので、ウィンドウの上部のバーをマウスでクリックしてconsoleを前面に出す。すると、以下の文字列が書かれているはずである({c10xxxx}の部分は自分の学籍番号)。この文字列をプロンプトと呼び、ユーザーからの命令を待っている状態であることをあらわす(ktermも同じ)。

irsv{c10xxxx}%

ログアウトは利用終了時に行う操作で、実施しないまま席を離れると、作成したファイルを第三者に閲覧されたり削除される可能性がある。ログアウトを行うためには、consoleで、logout[Return]もしくはexit[Return]と入力する。正しく入力すれば、初期のログイン画面に戻る。

irsv{c10xxxx}% exit[Return]

キーボードから入力を行う際にはフォーカスに注意が必要である。マウスでいずれかのウィンドウにカーソルを合わせると、ウィンドウの枠の色が変わる。このウィンドウをフォーカスの合ったウィンドウと呼び、キーボードからの入力は、このウィンドウに対して行われる。ウィンドウを前面に出したい時は、ウィンドウのタイトルバーをマウスで左クリックする。ウィンドウが背面にあってもフォーカスがあっていれば入力できる。ウィンドウの切り替えはショートカットキーで行うこともできる。ショートカットキーを使って切り替えると、切り替えたウィンドウに必ずフォーカスが合うので便利である。

ショートカットキーを用いたウィンドウの切り替え

  • Ctrl-1:emacsが前面に出る(フォーカスも合う)
  • Ctrl-2:ktermが前面に出る(フォーカスも合う)
  • Ctrl-3:consoleが前面に出る(フォーカスも合う)
  • Ctrl-4:Firefoxが前面に出る

注:Ctrl-1はCtrlキーを押しながら1を押すという意味

コンピュータ操作方法

Windowsではデスクトップにアイコンが表示されているが、ここでは全く表示されていない。UNIXではktermでコマンドを入力してファイルのコピーやアプリケーションの実行を行う。難しい言葉で前者をGUI(Graphical User Interface)、後者をCUI(Charactor User Interface)という。

ルートメニュー

頻繁に使うアプリケーションのみメニューが準備されている。デスクトップのウインドウ以外の背景で左クリックすると以下のようなメニューが表示される。使いたいアプリケーションを選択すると起動する。

メニュー

この授業で使用するアプリケーションのリストは以下の通り。

  • kterm:最初から起動している。複数起動したい場合に利用
  • Emacs:最初から起動している。複数起動したい場合に利用
  • Emacs24:文字サイズが大きなEmacs。通常のEmacsでは文字が小さい人向け
  • Kterm24:文字サイズが大きなkterm。通常のktermでは文字が小さい人向け
  • Firefox(2.0):ブラウザ。授業はWebページを使って行う。
  • StarSuite:Officeソフト。Microsoft Officeと同じ。互換性あり
  • GIMP:ペイントソフト。Adobe Photoshopと同じ
  • Tgif:ドローソフト。Adobe Illustratorと同じ

コマンド入力によるコンピュータの操作

コマンドとは、コンピュータに対して行う命令であり、あらかじめ規定の文字列が定められている。コマンドを実行する場合、コマンド名[Return](コマンド入力後Returnキーを押す)が原則となる。

まずはlsコマンドを使ってみよう。lsはlistの略で現在のディレクトリ(カレントディレクトリと呼ぶ)の中身を表示するコマンドである。ディレクトリはWindowsでいうフォルダのことである。Windowsではフォルダの中身はフォルダを開いている限りいつでも参照可能であるが、CUIではコマンドを入力しなければ確認することができない。コマンドを実行する場合はコマンド[Return]なので、ls[Return]と入力する。

irsv{c10xxxx}% ls[Return]
Mail/      maildir/    public_html/
Windows/   msmail/     script/

表示されたリストにはMail/のように/がついているものがある。これはファイルではなく、ディレクトリ(フォルダ)をあらわす。上記では、Mail/maildir/public_html/Windows/msmail/script/の6つのディレクトリ(フォルダ)があり、ファイルはひとつもないことになる。なお、これらのディレクトリは削除したり移動したりしないこと。削除や移動をすると、メールが読めなくなったり、Windowsでzドライブに保存したデータが消えたり、1年生のときに作成したWebページが消えることになる。

UNIXでは大文字と小文字を区別する。例えば、lsのかわりにLSと入力すると、「そんなコマンドは見つからない」と表示され、コマンドは実行されない。

irsv{c10xxxx}% LS[Return]
zsh: command not found: LS

まとめ

  • よく使うアプリケーションはルートメニューから起動できる
  • その他のファイル操作はktermでコマンドを入力して実行する
  • ls[Return]はディレクトリ(フォルダ)の中身を表示するコマンド
  • 名称の後ろに/がついているものはディレクトリ、なければファイル
  • コマンドは大文字と小文字を区別する

ディレクトリの作成と移動

作成した文書やプログラムはファイルとして保存される。1つのファイルには必ず1つのファイル名がつく(Windowsと同じ)。コマンドの場合と同様、大文字と小文字は区別される

ディレクトリはファイルを整理するための箱である。ディレクトリ=フォルダなので、Windowsでフォルダを作ってその中にファイルを入れるのと同じことである。ディレクトリも大文字と小文字を区別する

ディレクトリの作成

まず、今後授業で作成するプログラムを作成するディレクトリとしてrubyディレクトリを作成する。ディレクトリ作成のコマンドはMake Directoryを略したmkdirである。ただし今回はlsコマンドとは異なり、mkdir[Return]ではうまくいかない。コマンドの後ろに作成したいディレクトリ名を指定する必要がある。コマンド名とディレクトリ名の間は半角スペースをあける

irsv{c10xxxx}% mkdir ruby[Return]
 #=>mkdir+作成したいディレクトリ名

上記の通りコマンドを入力して[Return]を押しても何も起こらないが、実際にはディレクトリは作成されている。mkdirコマンドは単にディレクトリを作成するだけのコマンドであり、正しくできているかどうか確認するためにはlsコマンドを入力する必要がある。lsコマンドを実行するとruby/というディレクトリが新しくできていることがわかる

irsv{c10xxxx}% ls[Return]
Mail/      ruby/     maildir/     public_html/
Windows/   msmail/   script/

ディレクトリの移動

今作成したrubyディレクトリに移動しよう。Windowsであればフォルダをダブルクリックするが、ここではcdコマンドを利用する。cdはChange Directoryの略である。

irsv{c10xxxx}% cd ./移動先ディレクトリ[Return]

で移動することができる。./は自分が今いるディレクトリ(カレントディレクトリ)の意味であり、省略可能である。コマンド名とディレクトリ名の間は半角スペースをあける。 ktermには現在のディレクトリが右端に表示されるので、移動できたかどうか確認できる。ちなみに最初の段階では[~]と表示されているが、これは各ユーザーが自分のデータをおくことが出来る最上層のディレクトリをあらわし、ホームディレクトリと呼ぶ。ログイン直後はかならずホームディレクトリに位置する。以下はホームディレクトリからrubyディレクトリに移動した様子をあらわしている。

irsv{c10xxxx}% cd ./ruby[Return]            [~]
irsv{c10xxxx}%                    [~/ruby]

または./を省略して

irsv{c10xxxx}% cd ruby[Return]            [~]
irsv{c10xxxx}%                   [~/ruby]

今度はもとのディレクトリに戻ってみよう。Windowsの場合は「戻る」ボタンや「上へ」ボタンをクリックすれば戻ることができた。しかし、今はこれらのボタンは利用できない。ここでもcdコマンドを利用する。下のWindowsの例を使いながら説明すると、左側がホームディレクトリ、右側がrubyディレクトリとなる。rubyディレクトリはホームディレクトリの中にあるので、もとのディレクトリに戻るというのは、1つ上のディレクトリに戻るということになる。1つ上のディレクトリは..(ピリオド2つ)と表現する。

Windowsの場合は「戻る」ボタンや「上へ」ボタンで元のディレクトリに戻ることができる

したがって、cd ..[Return]で1つ上のホームディレクトリに戻ることが出来る。ktermの右側の現在のディレクトリ表示が[~]に戻っているか確認しよう。

irsv{c10xxxx}% cd ..[Return]           [~/ruby]
irsv{c10xxxx}%                   [~]

まとめ

  • ファイル名・ディレクトリ名は大文字と小文字を区別する
  • mkdir hoge[Return]でhogeディレクトリが作成される
  • cd hoge[Return](またはcd ./hoge[Return])でhogeディレクトリに移動する
  • cd ..[Return](またはcd ./..[Return])で一つ上のディレクトリに移動する

絶対パス指定と相対パス指定

ディレクトリの階層構造

ディレクトリの説明をする際に「上」という表現を用いたが、これはディレクトリを階層構造で表現するためである。Windowsを例にとりながら階層構造について確認してみよう。

以下の図は、デスクトップにある「フォルダ」の中に「写真」「レポート」「授業」という3つのフォルダがあり、「写真」の中に「pict1.jpg」「pict2.jpg」「pict3.jpg」という3つのファイルがある。

Windowsのフォルダでツリー構造を表現

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

Windowsのフォルダでツリー構造を表現

したがって、pict3.jpgは「フォルダ」の中の「写真」の中にあるといえる。このようにディレクトリ(フォルダ)の階層構造を踏まえたファイルの所在地をパスといい、次のようにあらわす。

  • Windowsの場合:フォルダ\写真\pict3.jpg(\でつなぐ)
  • Unixの場合:フォルダ/写真/pict3.jpg(/でつなぐ)

相対パス指定と絶対パス指定

一つ上のディレクトリに移動するためにはcd ..[Return]と入力するが、ここでは現在のディレクトリを基準としている。現在自分がいるディレクトリをカレントディレクトリという。カレントディレクトリを基準としてディレクトリやファイルを指定する方法を相対パス指定という。

下の図はディレクトリを階層構造で示したものである。~/で表記されたホームディレクトリ内にいくつかのディレクトリがあり、ruby/ディレクトリの中にはさらにファイルとディレクトリがある。kadai/をカレントディレクトリとした場合

  • ruby/:一つ上のディレクトリ
  • ~/:二つ上のディレクトリ

となる。カレントディレクトリから一つ上のディレクトリに移動するためにはcd ..[Return]と入力した。では、二つ上のホームディレクトリに移動するためにはどうしたらよいだろうか。

ホームディレクトリとカレントディレクトリについて

このためには幾つかの方法がある。まずはcd ..[Return]と入力して1つ上のruby/ディレクトリに移動し、再度cd ..[Return]と入力して1つ上のホームディレクトリに移動するというものである。

irsv{c10xxxx}% cd ..[Return]           [~/kadai]
irsv{c10xxxx}% cd ..[Return]           [~/ruby]
irsv{c10xxxx}%                   [~]
 #=>1回目のcd ..で~/rubyに移動、2回目で~/に移動

一度に2つ上のディレクトリに移動する方法もある。cd ../../[Return]もしくはcd ../..[Return]で二つ上のディレクトリに移動する。ディレクトリやファイルを指定するときは/でつなぐことができる

irsv{c10xxxx}% cd ../..[Return]         [~/kadai]
irsv{c10xxxx}%                   [~]
 #=>一度で二つ上の~/に移動

上位のディレクトリから下位のディレクトリに移動する際も、/でつなぎ複数階層を一度に移動できる。以下はホームディレクトリから二つ下のkadaiディレクトリに一度で移動している例である。

irsv{c10xxxx}% cd ruby/kadai[Return]      [~/]
irsv{c10xxxx}%                   [~/kadai]
 #=>一度で二つ下の~/kadaiに移動

なおカレントディレクトリがどこであっても、単にcdと入力するとホームディレクトリに戻る

irsv{c10xxxx}% cd[Return]            [~/kadai]
irsv{c10xxxx}%                   [~]
 #=>どこにいてもcd[Rerutn]で~/に戻る

相対パス指定がカレントディレクトリを起点とした指定方法をするのに対して、絶対パス指定は常にホームディレクトリから指定する。ここでは詳しく説明しないが2つだけ例をあげると、上記の図でkadaiディレクトリからpublic_htmlディレクトリに移動する場合、cd ~/public_htmlとなり、Mailディレクトリからkadaiディレクトリに移動する際には、cd ~/ruby/kadaiとなる。いずれも~/、すなわちホームディレクトリを起点として記述しており、カレントディレクトリがどこであるかは絶対パス指定の場合には重要ではなくなる。

まとめ

  • 自分の現在位置をカレントディレクトリという
  • ディレクトリ移動時にカレントディレクトリを起点として指定する方法を相対パス指定という
  • ディレクトリ移動時にホームディレクトリを起点として指定する方法を絶対パス指定という
  • ディレクトリ移動時は/でつないで指定することで複数ディレクトリを一度に移動できる

練習問題

下記のようなディレクトリ構造を仮定する。カレントディレクトリをsecond/とした場合に「image/」、「memo/」、「program/」の各ディレクトリに相対パス指定で移動するためにはcdコマンドを使用して、どのように指定すればよいだろうか。 cd ..を複数回繰り返すのではなく、1行で入力してみよう

練習 相対パス指定を身につけよう

解答は以下に白色で書かれているので、わかったらマウスで文字色を反転させて確認しよう。考える前に解答を見ないようにしよう。

  • image/:cd ../image
  • memo/:cd ../../memo
  • program/:cd ../../report/program

次回、ログインパスワードを変更する。8文字以上のパスワードを考えておくこと。

出席課題

UNIXを触った感想や、いろいろなコマンドを使った感想、授業への意気込み等をメールで送る。提出要領は下記の通り。

  • 提出先:課題提出用メールアドレス
  • Subject:ruby01
  • 本文:1行目に学籍番号と氏名を記載すること
  • 提出期限:授業終了時

採点:本日は出席点のみです

  • Tips:emacsでの日本語入力のオンオフはCtrl-o
  • Tips:Mewによるメールの送り方はmewコマンドを参照