UNIXへの挑戦(3)

   ==「ワークステーション入門」続編 ==

熊本国府高等学校PC教室


 WSやUNIXは奥行きのあるもので、この一冊を読めば全部が解るというものはありません。ましてや、ちょこちょこと書いたこんな冊子ぐらいでは全てを解ろうとするのは無理かも知れません。しかし各種市販の参考図書も取っつきにくい面もあり、マニュアルに至っては尚更です。そこで、今回は前編の「ワークステーション入門」に続く「UNIX操作手引き」ということで、「より快適にUNIXを利用する為に!」ということに主点を置き、できるだけ簡潔に解りやすくまとめたつもりですが、不充分なところも多いと思います。
 (なお、以下の1〜7は別ページに、8以降が本ページなっております。)

目次

1.ファイルとディレクトリ
2.ファイルやディレクトリ操作に関するコマンド
3.電子メール
4.メタキャラクタ(省略記号)
5.ヒストリー機能(操作歴利用)
6.リダイレクションとパイプライン
7.エイリアス(コマンドの別名登録)
8.シェルスクリプトとファイルの保護モード
9.バックグラウンドジョブ(裏仕事の依頼)

8.シェルスクリプト(複数コマンド一括実行)とファイルの保護モード

(1)シェルスクリプト

 シェルスクリプトとは、一連のコマンドを書き込んだテキストファイルのことです。そのファイルを呼び出すことによって、一連の操作をキーボードから入力する代わりに、コマンドをファイルから順々に呼び出して自動実行してくれます。MS−DOSのバッチファイルに相当するものですが、拡張子による区別はありません。しかしその代りに、ファイルに実行許可を与える(ファイルの保護モードを変える)必要があります。

  (シェルスクリプトの規則)
                                                                                                                                              
    ・第1行は、#(注釈行を表わす)で始まる。                         
    ・第2行からは、操作手順に従ってコマンド行ごとに、改行しながら書 
    いていく。                                                 
    ・ファイル名が、実行コマンド名になる。                             
    ・そのファイルを、実行可能状態にする。(chmod +x ファイル名[RT]
        (ここがMS−DOSのバッチファイルと異なる)                 
                                                                       

 さっそく、簡単なシェルスクリプトを作ってみましょう。

                                                                    
    (例題)2つのファイルの中身を交換するシェルスクリプトを作る。  
                                                                    
  ,弔のようなファイル名を「swap」とするテキストファイルを作りましょう。
  「vi」でも、「cat」コマンドでも構いません。
 
                            (各行の意味)             
        #                   注釈行(#の後にファイル名を書くもよい)   
        mv $1 tmp          第1ファイルの内容をtmpに退避       
        mv $2 $1          第2ファイルの内容を第2ファイルに移す   
        mv tmp $2          tmpの内容を第2ファイルに移す               
                         

        間違いなくファイル「swap」が作られたかを確認しておきましょう。
                        
    ls -l swap        
                        
        これで、次のようなファイルの「繊細情報」が表示されます。
                                                                       
        -rwxr-xr-x  1  nari    kanrisha   31 Mar 10 11:52 swap     
          ↑   ↑  ↑    ↑      ↑  ↑     ↑               
        保護モード | 所有者  グループ    | 修正日時  ファイル名 
         リンク数         ファイルの大きさ             
                                                                       
        内容も確認したいなら、「cat」コマンドを使いましよう。

        続いて、ファイル「swap」を実行ファイルにします。
                        
    chmod +x swap[RT] 
                        
        実行モードになったかどうかを確認するには、次のように入力します。
                        
    ls -l swap[RT]      
                        
         -rwxr-xr-x   1 nari     kanrisha      13 Mar 11 14:23 swap


    保護モードがxとなっています。実行ファイルになったという印です。
    △侶覯未犯羈咾靴討澆堂爾気ぁ

                                                                    
    実行形式は 「swap 第一ファイル名 第2ファイル名[RT]」 です    
    これを実際に実行するには、第1ファイルと第2ファイルが既に存在  
    しているか、存在しないなら新たに作成しておくことが必要です。    
                                                                    

  それでは、「swap」スクリプトを実行してみましょう。
  例えば、2つのファイル「test1」と「test2」があったとすれば、
  次のように入力します。
                            
    swap test1 test2[RT]  
                            
        これで「test1」と「test2」の内容が入れ替わります。
        「cat」で確認して下さい。

 以上簡単な例でしたが、シェル変数や演算式及び膨大なコマンド群や制御文をフルに活用すれば、より便利なスクリプトを完成することができます。その全てを表記するには数百ページでも終わらない分量とのことです。詳しくはマニュアルや市販書を参照ください。

(2)ファイルの保護モードの見方


                   所有者
        -:ファイル      │ 所有者グループ
        d:ディレクトリ    │ │ 全ユーザ
        │           │ │ │   
        └───────── -rwxr-xr-x

         ファイル使用許可情報
     ┌────┬───┬───┐
     │    │許可 │禁止 │ 
     ├────┼───┼───┤                     
     │読み出し│ r │ − │                                
     │書き込み│ w │ − │                                
     │ 実行 │ x │ − │ 
     └────┴───┴───┘                             
 

 UNIXでは、他のユーザが故意または過失で、大事なファイルを消してしまったり、勝手に書き換えたりするのを防止するため、ファイルやディレクトリの保護モードが設定されています。これによって、ファイルの所有者自身(u)、所有者の属するグループ(g)、全てのユーザ(o)を区別してアクセス(使用)できるユーザを制限できるのです。
 グループと全てのユーザに書き込み許可を与えるアクセス権の変更は次のようにします。

                                                                       
            chmod go+w ファイル名[RT]                                  
                                                                       
                                                                       
        ユーザの種類(ugo) 許可追加(+)削除(-) 許可の種類(rwx)  

目次へもどる


9.バックグラウンド・ジョブ(裏仕事の依頼)

 フォアグラウンド・ジョブでは、1つのジョブ(仕事)が終了しなければ、次のジョブは依頼できない。それに対してバックグラウンド・ジョブ(裏仕事)とは、ジョブの終了を待たずに次のコマンド入力(ジョブの依頼)が可能になるのです。今まで実行してきたものは全てフォアグラウンド・ジョブでした。
 何時間も何日もかかるような長大な仕事は、このバックグラウンド・ジョブに任せればいいのです。

(1)バックグラウンド・ジョブの開始

普通と同じようにコマンドを入力し、[RT]の前に「&(アンパサンド」印を付けるだけです。「&」を省略するとフォアグラウンドで実行されます。

    コマンド行&[RT]  
                                                                      
        ただ、バックグラウンド・ジョブの場合、キーボード入力を要求したり、
        結果を画面に表示したりすれば、操作が混乱しますので、
                        ・キーボードからの操作を必要としないような全自動式
                        ・入力データはファイルから読ませる
                        ・結果出力もファイルに書き出す
        という形が望ましいと思えます。

        例えば、次のような例があります。
                                                   
    例 コマンド行<入力ファイル>出力ファイル&[RT]

(2)ジョブ番号

        バックグラウンド・ジョブを開始すれば、画面に
                  
    [2] 215    
                  
        というように表示されます。[ ]内の番号は「ジョブ番号」といい、
        その右側の数字を「プロセス番号」といいます。今開始した仕事の管
        理に必要です。ジョブ番号は、現在実行中ののバックグラウンド・ジ
        ョブの数を示します。

(3)バックグラウンド・ジョブの状態

        バックグラウンド・ジョブの状態は「jobs」コマンドで参照します。
                 
    jobs[RT]      
                  

        画面に次のように表示されます。

        (出力例)
                                          
        [1]  + 実行中      clock     
        [2]  − 実行中      hanoi     
        [3]    実行中      circle    
                                          
     ジョブ番号     状態       コマンド名
                優先度(+が最優先,−が2番目,空白はその下)

(4)バックグラウンド・ジョブの終了・休止・再開

        ―了させるには
                               
        kill プロセス番号[RT]  
            または             
        kill %ジョブ番号[RT]    
                               
                        を使います。
                               
        kill %[RT]              
                               
   これで、最優先ジョブが終了しますので、繰り返せば全てを終了させることができます。

        休止させるには、フォアグラウンド・ジョブと一緒です。
                         
        CTRL+Z     
                         
                を使います。従って、一度フォアグラウンド・ジョブにする必要があります。

   フォアグラウンド・ジョブにするには、
                         
    fg %ジョブ番号[RT]    
                         
        これで指定したジョブ番号がフォアグラウンド・ジョブに切り変ります。

                         
    fg[RT]               
                                                                              
        このようにしても、最優先ジョブをフォアグラウンド・ジョブにすることができます。

        休止したジョブを、フォアグラウンド・ジョブで再開させるにも
                         
    fg[RT]               
                         
        バックグラウンド・ジョブで再開させるには
                         
    bg[RT]               
                         
        と入力します。

 いかがでしたか。UNIXはマルチユーザ・マルチジョブのOSですが、1つのジョブが1つのシェル(コマンド・インタプリタ)を占有するため、あるジョブを実行中はそのジョブの終了を待たなければ、次のコマンドを入力できない。そこで、時間のかかるジョブをバックグラウンドに任せれば、平行して別な作業をマルチで続けることができるようになるわけです。


<<終わりに>>

 今回は、UNIXを操作する上で、便利な機能を中心にまとめたつもりです。大部分がCシェル機能の紹介でした。Cシェルとは、コマンド・インタプリタの一つで、Bill Joy氏によって標準シェルが強化されたものです。プログラミングの構文がC言語に似ていることから、その名前が付いたそうです。
 WS・UNIX操作にあたっては、この他にも、「マルチウィンドウシステム」や「環境設定」、「通信ネットワーク」、「バックアップ」、「システム管理」など、まだまだ沢山の分野がありますが、今回は以上です。アマチュアが書いたもので、間違いや解りにくい点も多いと思いますが、お許しください。なお、お気付きの点がありましたら、ご指摘ください。今後の参考にさせていただきます。最後に、手元にある参考図書を紹介しておきます。 1992.3.15 (^_^r.n
        やさしいUNIXのはじめかた(オーム社)
        UNIXネットワークシステムの使い方(HBJ出版局)
        ザ・UNIX(サイエンス社)
        UNIXハンドブック(ナツメ社)
        UNIX利用の手引き(コロナ社)

目次へもどる


「1〜3」は

UNIXへの挑戦(1)です

「4〜7」は

UNIXへの挑戦(2)です


文責:成田

学校紹介のページへ  コンピュータのページへ