コンピュータセミナー
2001.6.22



  1. 本日の作業内容

    1. シェル
      1. 一般的な動作
      2. 環境変数
      3. ファイル名展開
      4. リダイレクト、パイプ
      5. 直列実行、並列実行、条件実行
      6. コマンド行の編集
      7. シェルスクリプト
    2. 今日の実習
    3. 本日の復習課題
    4. 次週の内容


  2. シェル

    シェルとはshellのことであり、貝殻のような殻である。これはコンピュータの中枢部を包み込んで取り囲むイメージでもあるし、ユーザの環境を取り囲む殻でもある。コンピュータの処理自体はMPUとよばれる処理装置が行っているが、それに直接命令するためには機械語と呼ばれる8進数の記号を使用しなければならない。それでは不便であるため、より人間に理解しやすいコマンドとして操作を簡略化することが行われ、その処理を行うのがOS、オペレーティングシステムである。

    UNIX系のOSでは人間とOSとの間を取り持つ橋渡しをシェルが行っている。WindowsではExplorerがそれに近い役割をしているが、GUI元祖のMacintoshのFinderと呼ばれる環境がシェルをGUI化したものに近い感じである。ユーザの操作の補助を助ける仕組みがシェルにはたくさん用意されている。これから少しずつ学習していこう。


    1. 一般的な動作

      教科書p.187

      Linuxにおいてシェルの司る最も重要な役割はログイン、ログアウトの管理である。現在デフォルトのbashというシェルが起動している。教室の環境はログイン時にXウィンドウシステムが起動済みであるので、ログイン直後からマウスによる操作が可能であるが、その中でウィンドウとしてターミナルを起動したときに直接目に見えるのがbashである。ターミナルのウィンドウ内で

      $ exit

      とすると、そのシェルから抜けるので、ウィンドウが閉じてしまう。

    2. 環境変数

      教科書p.187

      UNIX系のOSではユーザごとの使用環境を保存する設定ファイルがホームディレクトリに置かれる。通常はドットで始まるファイルなので、lsコマンドではオプションを付けないと表示されない。デフォルトの設定はターミナル上で

      $ export | less

      とすると見ることが出来る。実に多くの環境が設定されているが、それらの項目が 「環境変数」であり、変数に値を代入することにより設定を実行する。なお、デフォ ルト以外に自分んで設定する場合には、.bash_profile に設定を記述す る。UNIX系では設定ファイルのほとんどはテキストファイルなので自分の好みの設定にするためにはテキストベースで設定ファイルを編集する必要がある。

      先ほどの export コマンドで変数の名前を参照することは出来るが、実際に個別に表示させる場合には変数の頭に$を付ける必要がある。なので、現在設定されている PATH を見るためには

      $ echo $PATH

      のようになる。なお、コマンドベースで操作を行うUNIXでは一般的にコマンドは /bin ディレクトリや /usr/bin ディレクトリなど置く場所がだいたい決まっている。そこで、絶対パスによるコマンド起動をより簡単にするためにあらかじめ決められたディレクトリにあるコマンドはディレクトリを指定しなくても起動できるようになっている。それが、PATHに含まれるディレクトリである。たとえば、端末のネットワーク環境の状態を見るコマンド netstat /bin ディレクトリにあるので、

      $ netstat -rn

      のように使用できるが、ネットワーク設定そのものを見るコマンド ifconfig は管理者専用のディレクトリである /sbin にあるので、

      $ ifconfig

      としてもそのようなコマンドは無いというエラーが出る。その際には、

      $ /sbin/ifconfig

      とすると、設定を見ることが出来る。

      教科書のp.189の一番上の四角い枠の下で 「$の左に|がついているのは、」の「|」はバックスラッシュの間違いである。また、同じページの

      linux: export PS1='\h\w >'

      の二行下にクエスチョンマークの逆立ちしたものがあるが、あれは>の間違いである。(\はバックスラッシュと同じ意味であることにも注意)


      ファイル名展開

      教科書p.190

      今までに自分のホームディレクトリにあるファイルを編集する作業を何度か行った。その際に、ホームディレクトリにあるファイルを指定する場合には、

      ~/.xemacs.el

      のような表記法を使用してきた。この、先頭の〜(ティルダ)がホームディレクトリを表す記号である。また、ホームディレクトリに移動する際にはオプション、引数とも無しで

      $ cd

      とするだけでよい。

      *、?の記号はシェルにおいてはワイルドカードとして指定されている。それぞれ文字列と文字に代用できる記号であり、複数のファイルをコピーするときや、ファイル名を詳細に覚えていないファイルを操作する際など有効である。なお、それらのワイルドカードはファイル名の先頭に.がある場合、それらとはマッチしないので、注意が必要である。


    3. リダイレクト、パイプ

      教科書p.193

      すでにRubyの方で使用しているリダイレクトは覚えておくと便利であるが、慣れないうちは間違いも多い。うっかり大事なファイルを上書きしてしまうと大変なことになるので注意が必要である。教科書には書いてないが、>>もリダイレクトとして使用することが出来、この場合はファイルの末尾に追加することを意味する。

      パイプは表12.1の一番下にある|でコマンドをつなぐことである。 ls によるファイル名一覧表示、cat によるファイルの中身の表示などで、画面に収まりきらないときにページャである less に処理を引き継いで

      $ ls -l | less

      のようにすることを覚えておくと楽である。次章でその他のコマンドとの組み合わせなどを試す。


    4. 直列実行、並列実行、条件実行

      教科書p.193

      図12.2とあるのは表の間違いであるが、その一番上の;でつなぐ方法は複数のコマンドを一度のコマンド操作で行えるので便利なことがある。2番目の方法は、X上でウィンドウを新たに開くアプリケーションの起動などで&だけを付ける方法はすでに試している。

    5. コマンド行の編集

      教科書p.195

      教科書ではコマンドの履歴をたどる方法としてCtrlキーとp、nの組み合わせが紹介されているが、これは↑↓で置き換えることも出来る。覚えると便利である。長いコマンドの際に一部を間違えてエラーが出たときなど、間違えた部分だけを訂正して再実行できる。また、TABによる補完も是非覚えておきたい操作である。

  3. シェルスクリプト

    Rubyによるスクリプト作成ではなかなかプログラミンヘの理解が進まず苦しんでい るところであろう。実は、特別な言語を理解しなくてもシェルにスクリプトを実行 する機能もあるので、各種の作業もやろうと思えば可能である。実際、Linuxの起 動はシェルスクリプトにより行われているし、ユーザのログインもシェルスクリプ トにより環境構築がなされている。以下には、ファイルの名前を一斉に変更する簡 単なスクリプトの例だけを紹介するが、シェルでもこのような作業ができることは UNIX系のOSユーザにとって日常の作業を自動化したり、簡略化したりでき るので非常に重宝されている。一方、GUIの使用が前提であるOSでは一番弱 い部分である。

    #!/bin/sh
    
    for filename in `ls`
    do
        cp $filename $filename.bak
    
    done
    

    実際の動作としてはディレクトリにあるファイルすべてに拡張子 .bak をつけたものを複製として作成する。実用上はいろいろと問題もあるが、こ のようにしてバッチ処理を行うことができる。

    また、以下のようなシェルスク リプトを作成しておくと、この授業開始時に必要な環境を一斉に整えることも可能 かもしれない。

    #!/bin/sh
    
    netscape http://www.ecs.shimane-u.ac.jp/~nawate/lecture.html &
    kterm &
    sylpheed &
    gedit &
    


  4. 今日の実習

    教科書の操作例を自分で試すことと、問題の答を考えること。ただし、問題番号は無茶苦茶になっているので、気にしないこと。問題は全部で4問ある。

  5. 本日の復習課題

    授業の終わり頃に次回までに提出する課題を発表するのでアナウンスに注意すること。また、発表されたら課題を表示するためには、一度このページを再読み込みする必要があるのでNetscapeのボタンをクリックする。そうしないと、課題のページは表示されない。

  6. 次週の内容

    第13章のコマンドについて実習する。


ページの先頭へ戻る

目次ページへ戻る