UNIXへの挑戦(2)

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

      熊本国府高等学校PC教室


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

目次

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

4.メタキャラクタ(省略記号)

 ファイル関連のコマンド(ls,cp,mv,rmなど)を使用するとき、ファイル名を一括指定したり、ファイル名の一部を省略したりできたら便利です。そのために便利なのがメタキャラクタです。メタキャラクタといったら、後述する「リダイレクション記号」や「パイプライン」の「|」、及び「バックグラウンド」の「&」も含みますが、この項ではその一部の省略記号だけを扱いました。それぞれについては別項6を参照ください。

(1)任意の文字を表わす記号

    ?:任意の1文字を表わす                
    *:0文字以上の任意の文字列を表わす      
                                              
                     
    例1 ls *os*[RT]  
                     
                この場合、「os」という綴りを含むファイル名を全部表示します。
                        (ms-dos,osabc,osaka,kinositaなど)

                      
    例2 ls *.cbl[RT]  
                      
                この場合は、拡張子が「cbl」のファイル名を全部表示します。

                      
    例3 ls a?c[RT]    
                      
                この場合は、「a」で始まり「c」で終わる長さ3字のファイルを全                    部表示します。

                              
    例4 mv c*.c ../cfile[RT]  
                              
                この場合は、カレントディレクトリの「c」で始まり、拡張子が「c」                  のファイルを全部、ディレクトリ「../cfire」に移動させます。

                        
    例5 cat jo*92*[RT]  
                        
                このように、カレントディレクトリ内の他のファイルと異なる部分                    だけ打って、他の文字は「*」で代用でき、「cat josishouseito19                    92.data」と打つ必要はありません。

(2)その他の記号

                                                                
    [pko]:「p」または「k」または「o」の1文字を表わす  
                                                                
                        
    例1 ls [ab]*[RT]    
                        
                「a」または「b」で始まるファイル名を全部表示します。
                                                                      
    {yama,kawa,tani}:「yama」「kawa」「tani」のいずれかを表わす  
                                                                      
                              
    例2 ls *.{cbl,c,bas}[RT]  
                              
                拡張子が「cbl」「c」「bas」のファイル名を全部表示します。
                                                            
    [a−d]:「a」「b」「c」「d」のいづれかを表わす  
                                                            
                          
    例3 ls *[0-9]*[RT]    
                          
                数字を含むファイル名を全部表示します。
                                                                      

 メタキャラクタをうまく活用すれば、便利で効率的なファイル操作ができ、うまく活用するためには、「ファイル名の付け方」も重要なポイントとなる。うまいファイル名で効率的操作を!

目次へもどる


5.ヒストリー機能(操作歴利用)

 「一度入力した長ったらしいコマンドを再入力するのは面倒だ。」 そんなときに便利なのが「ヒストリー機能」です。

(1)直前コマンドの再実行 !!

  次のように入力してみて下さい。
                
    ls -l[RT]   
                
    !![RT]      

 いかがでしたか、「!![RT]」だけで「ls-l」が再実行できたでしょう。こんな簡単なコマンドだけでなく、オプションやファイル名を含んだ長いものでも、繰り返しキー入力することなく「!![RT]」だけで、再実行ができるのです。

(2)その他の履歴利用

 次のように入力して下さい。
                 
    history[RT]  
                 
        (実行例)
                                 
        [luna1 13] history       
              1 cd /etc          
              2 pwd              
              3 ls -l *[0-9]*    
              4 cd               
              5 pwd              
              6 ls -l            
              7 ls               
              8 ls -F            
              9 ls -l ????       
             10 ls -lFa          
             11 cd /etc          
             12 ls -l ???        
             13 history          
                                 
 いかがですか? 過去の操作歴が表示されたでしょう。

 「history」で表示されるコマンド操作歴には、操作順序を表わす番号が付いています。
 この番号を用いれば、「何回前」とか「何番目」というのが確実に指定できます。
 上の例のように、操作歴が3以上あったことを確認して、次のように入力すれば、2つ前のコマンドが実行されます。

                                  
    !-2[RT]     
                
        上の実行例の場合、12番の「ls -l ???」が実行されます。
    3字のファイル名だけが表示されます。

                
    !5[RT]      
                
        上の例では、5番の「pwd」が実行されます。現在のディレクトリ位置が               「絶対パスを付けたディレクトリ名」で表示されます。

                             
    !コマンドの先頭部分[RT]  
                             
        例えば「!h[RT]」とすれば、13番の「history」が実行されます。

(3)過去のコマンドを一部変更しての再実行

 過去コマンドをそのまま実行するのではなく、ファイル名などを一部変更して利用することは多いと思います。こんなとき便利な機能です。プログラムを次々にコンパイルしていくときなどに利用すれば便利でしょう。

                                  
    !!や!数字などの後に           
        :s/旧文字列/新文字列[RT]    
                                  
        過去のコマンド行の一部の「旧文字列」の部分が、「新文字列」に
        変更されて実行されます。

        直前コマンドの修正は、プロンプトの後に、次のように入力します。
                                   
        ^旧文字列^新文字列[RT]       
                                   
         (このときは、「!!:」は不要)

 以上述べたものは、1箇所だけの変更ですが、指定したコマンド行の中の全ての「旧文字列」を「新文字列」に一斉に変更して実行することもできます。その方法は次のとおりです。

                                   
    !!や!数字などの後に            
        :gs/旧文字列/新文字列[RT]    

 いかでしたか。この他にも、各コマンド行の単語単位に指定するなど、便利で、しかも複雑な機能がもっとありますが、詳しくはマニュアルやUNIX関連の書籍を参照して下さい。

目次へもどる


6.リダイレクションとパイプライン(入出力切り替え)

(1)リダイレクション

 UNIXでは、標準入力はキーボード、標準出力はディスプレイとなっています。よって、出力先を指定しなくても「ls」とすると、実行結果はディスプレイに表示されるのです。この標準の出力先や入力元を適当に切り替える機能をリダイレクションといいます。

次のように入力して下さい。
                       
    ls -l >tfile[RT]   
                       
        いかがですか? 画面上の変化はありませんが、
        新しく「tfile」という名前のファイルが自動的に作成されています。

                       
    ls -l[RT]          
                                                                       
        「tfile」というファイルが、新しく作られているでしょう。 

        では、そのファイルの内容を見てみましょう。
    cat tfile[RT]      
                       
        いかがですか? 
        コマンド「ls -l」で、ディスプレイ画面上に表示される内容が、
        そのまま「tfile」の内容になっているはずです。
        続けて
                       
    date>tfile[RT]     
                       
        確認のために出力してみましょう。
                       
    cat tfile[RT]      
                       
        あれ? 今度は日付けに変わりました。

        「>」を使うえば、新規ファイルは問題なく作成できるます。
        即ち、既存ファイルは書き換えられるということです。
        ファイル名に気をつけましょう、大事なファイルを書き換えたら危険!

    ls -l>>tfile[RT]   
                       
    cat tfile[RT]      
                       
        今度は、日付けの下に「ls -l」の内容が入ります。
        「>>」は、既存ファイルの内容に追加出力する記号です。

 今までは、コマンドの出力先をファイルにしましたが、ファイルを入力元にすることもできます。「3.電子メール」の、「mail」コマンドの例で使っています。

                       
    head -2<tfile[RT]  
                       
        tfileの最初の2行だけが、画面に表示されます。

 また、こんなこともできます。
                                
    cat ファイル名>/dev/lp[RT]  
                                
        catの出力を直接プリンタに持って行くもので、
        ファイルの内容が、画面には表示されずに印刷されます。

(2)パイプライン

 コマンドの「出力」を、そのまま別のコマンドの「入力」として送り込む機能です。記号「|」(SHIFT+¥で入力すれば、縦棒になる)を使います。

                                                   
    例 cat ファイル名|lp[RT]                       
            「cat」の出力を「lp」の入力する        
                                                   
                ええっ! ファイルを印刷するのだったら、
                             
            lp ファイル名[RT] 
                             
                だけで、いいんじゃないか。何でこんな面倒なことを!

 これはファイルを印刷する場合、ファイルの内容を「cat」で確認した上で、印刷するのに便利です。だから、私は次のような使い方をします。

    cat ファイル名[RT]  
                        
        まず、ファイルの内容を確認します。その内容でよかったら、印刷しますの    で、ヒストリー機能を使って、次のように入力します。
                 
    !!|lp[RT]  (ビックリビックリ縦棒エルピー)
                 
        これで、印刷できます。

目次へもどる


7.エイリアス(コマンドの別名登録)

 UNIXでは、一連の「コマンド行」に、自分の好みにあわせて、名前を付け変えることによって、自分の好みにあった快適な環境を作ることもできます。

        例:長ったらしいコマンド====>短い名前に
          MS−DOSと違う======>MS−DOSと同じ名前に
          使い難い================>使いやすい名前に

                                                            
    別名の付け方は 「alias 別名 本名[RT]」だけでよい。       
                                                            
                         
    alias dir ls -l[RT]  
                         
        本来のコマンド「ls -l」に、別名「dir」を付けました。

        これで、MS−DOSと同じ「dir」で、ディレクトリが表示できます。
                
    dir[RT]     
                
    dir 鴫F    
                
        いかがでしょう。作った別名にオプション使うこともできます。

                         
    alias a alias[RT]       「alias」を「a」に
                         
    a h history[RT]        「history」を「h」に
                         
    h[RT]                
                         
        どうですか、色々やってみて下さい。

        現在までにどのような別名を定義していあるのか、調べてみましょう。
                         
    a[RT]                    「alias[RT]」のことです
                                どんな別名だったか忘れたときも、  
        この「alias」で、次のような一覧を表示させることができます。

        (別名定義の一例)
                                                           
         [luna1 14] alias                                  
         a  alias                                          
         c  clear                                          
         cd cd !*;set prompt="[`hostname`(`dirs`)\!] "     
         e  exit                                           
         h  history                                        
         la (ls -aFx)                                      
         ll (ls -l)                                        
         lld    ls -l !* | grep "^d"                       
                                                           
                                                                 
        一度定義した別名をログイン中に解除するには、「unalias」 
       を使用する。使用法は 「unalias 別名[RT]」 である。       
                                                                 
                         
    unalias h a dir[RT]  
                         
        これで、別名「h」「a」「dir」が解除できます。

        また、メタキャラクタを利用して、
    unarias *[RT]
                         
        とすれば、全てが一度に解除されます。

                                                                       
    「alias」で定義した別名は、一度ログアウトすれば、消えてしまう。そ 
   こで、ユーザごとの環境設定ファイル「.cshrc」に、先程の「別名定義 
   の一例」で示した別名を設定すれば、消えることなく毎回利用できます。

目次へもどる


「1〜3」は

UNIXへの挑戦(1)です

「8〜9」は

UNIXへの挑戦(3)です


文責:成田

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