RREVIOUS | TOP | NEXT

UNIX の基礎(2)[UNIX基本コマンド]

今日の目標

基礎的なUNIXコマンドが使えるようになることが今回の目標です。 コマンドの使い方を忘れたときに、調べる方法についても学びます。

ファイルとディレクトリ

UNIX は全てがファイルから構成されているシステムです。 UNIX でのファイルとは何であるのか解説します。

カレントディレクトリ

ユーザが現在作業しているディレクトリをカレントディレクトリと呼びます。
  • pwd コマンド − カレントディレクトリ名(現在操作中のディレクトリ)を表示する。
    $ pwd 
    /homer/pl/tea/mmr14135 ・・・各自違う結果になるはず
    
  • ls コマンド − ファイルリストを表示する。
    $ ls
    $ ls -a ・・・隠しファイルも含む全てのファイルリストを表示
    $ ls -l ・・・ファイルに関する詳細情報を表示
    $ ls -la ・・・隠しファイルもふくめて、ファイルに関する詳細情報を表示
    $ ls -F ・・・ディレクトリ名の後ろに「/(スラッシュ)」が付く。
    

    隠し(不可視)ファイルファイルとは、 ピリオド"."で始まるファイルは隠しファイルである。
    lsコマンドでみるには、オプション-aが必要。 このように、コマンドの動作を変更する指令を「オプション」といい、 コマンドの引数として指定します。

  • cd コマンド − カレントディレクトリの変更

    例えば、Desktop という名前のディレクトリをカレントディレクトリとするには、

    $ cd Desktop 
  • man コマンド

    UNIX には非常に多くのコマンドがあるため、すべてを把握するのは困難ですが、基本的なコマンドにはオンラインマニュアルが用意されています。オンラインマニュアルを使用するには、man というコマンドを用います。例えば、

    $ man cat                                                     
    

    と入力すると cat コマンドのマニュアルが表示されます。したがって man コマンド自身のマニュアルは、man man と入力すれば表示されます。

    マニュアルの次の行を表示するにはリターンキー、次のページを表示するに はスペースキーです。

    1 行スクロールアップ Enter キー
    1 ページスクロールアップ Space キー
    1 ページ逆方向へスクロール b
    終了 q, Q

    また、行いたい操作がどのようなコマンドを使えばできるのかを知るには、 man -k keyword とするとヒントが得られます。

    キーワード検索については、英文を英単語のキーワードで検索する方がヒットしやすいかもしれません。ファイルを複製(copy)をするコマンドを探すなら、次のように実行します。

    $ man -k copy
    cp(1)                    - copy files
    cpio(1)                  - copy files to and from archives
    dd(1)                    - convert and copy a file
    memccpy(3)               - copy string until character found
    : --- 以下たくさん ---
    

    目的のコマンド名がわかったら man cp などとして詳しい説明を読みます。

    パス

    ファイルを指定する時は、階層の一番上(ルートといい"/"で表現します), あるいはカレントディレクトリから、
    そのファイルにたどり着くまでのディレクトリを"/"で区切りながら順にならべます。 このようにファイルを指定する文字列をパスと呼びます。パス= path = 径路(経路)、そのファイルに至る道筋という意味です。

    パスの例として、

    /homer/pl/tea/mmr14135/Examples/readme.txt
    

    が意味するのは…
     ファイルシステムの一番根元のディレクトリ(ルートと呼ぶ)の中にある( 一番先頭の/ がそれを表す)
     homer というディレクトリの中にある
     tea というディレクトリの中にある
     mmr14135 というディレクトリの中にある
     Examples というディレクトリの中にある
     readme.txt というファイル

    を指定しています.
    この例のパスは/で始まっていることに注意してください。入り口 (root)からの完全な経路をしていしている、 このパスを絶対パスと呼んでいます。
    もう一つの例として、

    Examples/readme.txt
    

    が意味するものを考えましょう。
    これは/で始まっていないので、どこのディレクトリの中の Examples ディレクトリなのか分からないことになりますが、この場合は
    カレントディレクトリの中にあるExamplesを指定することになっています。
    だからもしカレントディレクトリが /homer/pl/tea/mmr14135 と指定されていたら 実際のパスは

    /homer/pl/tea/mmr14135/Examples/readme.txt
    

    となりますが、もしカレントディレクトリが /homer/pl/tea/ となっていたら (ディレクトリteaのなかに Examplesがあるとしての話です)

    /homer/pl/tea/Examples/readme.txt
    

    になります。
    このように/で始まらないパスは、カレントディレクトリを基準として ファイルを指定するパス(相対パス)と理解されます。
    カレントディレクトリを設定することで、本来長いパスを省略して書くことができます。

    特殊なファイル名として、"." と ".." があります。 "." はカレントディレクトリ(ユーザが作業を行っているディレクトリ)を、".." は 1 つ上の階層のディレクトリを表します。 親ディレクトリに移動するには、

    $ cd  ..
    

    UNIXコマンドの練習

    カレントディレクトリのパスを調べるには pwdコマンドを使用します。

    $ pwd
    /homer/pl/tea/mmr14135
     ・・・/tea/mmr14135のところ各自違う結果になるはず
    

    みなさんも試してください。

    $ pwd 
    /homer/se/16/rp ...
    

    となっているはずです。

    カレントディレクトリにあるファイルの一覧を表示するには ls コマンドを使用します。

    $ ls
    Desktop   Rits-Rainbow  wp1.txt
    Examples  public_html
    

    ※ まず、かんたんのために前回描いた絵をGUIの操作でデスクトップから ホームディレクトリに移しておきましょう。

    CUIでのディレクトリの作成には mkdirコマンドを使用します。 前回に描いた絵を収めるディレクトリ「PicBox」をつくりましょう。

    $ mkdir PicBox
    $ ls
    Desktop   PicBox        public_html
    Examples  Rits-Rainbow  wp1.txt
    

    もちろん、もっとつくれます。

    $ mkdir training
    $ ls
    Desktop   PicBox        public_html  wp1.txt
    Examples  Rits-Rainbow  training
    

    ディレクトリへ移動するにはcdコマンドを使用します。

    $ cd PicBox    
    $ pwd
    /homer/pl/tea/mmr14135/PicBox
    

    このディレクトリにあるファイルを確認しましょう。

    $ ls
    $ ls -aF
    ./   ../
    

    ls にオプション -a を与えると、全てのファイルを表示します。"." はそのディレクトリ自身を示し、".." はひとつ上のディレクトリを示します。ここでは、
    . = /homer/pl/tea/mmr14135/training
    .. = /homer/pl/tea/mmr14135/
    となります。ls -a で表示されたものが "." と ".." だけということは、何も入っていないディレクトリだということです。

    1階層上のディレクトリに遡るには、特別なディレクトリ名「..」を用います。

    $ cd ..    
    $ pwd
    /homer/pl/tea/mmr14135・・・各自のホームディレクトリになっているはず
    

    ホームディレクトリに直接移動する方法は cd ~ と入力します。「~」はホームディレクトリを意味する記号です。
    (ホームディレクトリに移動することはcd のみ入力してもできます)

    $ cd ../../
    $ pwd
    /homer/pl
    $ cd ~
    $ pwd
    /homer/pl/tea/mmr14135・・・各自のホームディレクトリになっているはず
    

    ファイルのコピーをするのは cp コマンドです。

    ホームにある GIMPで描いた絵をPicBoxにコピーしましょう。

    $ cp  ピーマン2016.xcf PicBox
    $ cd PicBox
    $ ls
    ピーマン2016.xcf                                                          
    

    やはりファイル名は英数文字にしておいたほうがつかいやすいですね。
    ※ まだ絵を描いていないひとは

    $ gimp &
    
    としてグラフィックソフト 『GIMP』を起動して描画してください。保存するときは、GIMP形式 (*.xcf)にしておくとよいでしょう。

    アカウント名 mmr14135 (講師:松本)のホームディレクトリに行くには

    $ cd ~mmr14135
    $ pwd
    pwd
    /homer/pl/tea/mmr14135
     ・・・松本のホームディレクトリになっているはず
    

    とします。「~」の後にユーザIDをつけると、そのユーザのホームディレクトリを意味します。

    隣のひとのホームディレクトリに行ってみましょう。

    筆者のホームディレクトリ内のExamplesディレクトリ(/homer/pl/tea/mmr14135/Examples または ~mmr14135/Examples)
    にサンプル等を置くので、適宜参考にしたりコピーして使ってください。

    他人のファイルでもコピーできてしまうこともあります。 私(講師)のホームディレクトリに在るファイルを各自のホームディレクトリにコピーしてみましょう。

    $ cp  ~mmr14135/Examples/readme.txt  ~/
    $ cd ・・・受講者のホームディレクトリに移動した
    $ ls
    readme.txt (その他のファイル)
    $                                                                 
    

    このファイルの内容を見てみましょう。catコマンドでファイルの内容を標準出力に渡します。

    $ cat readme.txt                                                  
    

    自分のホームディレクトリにコピーしなくても、直接ファイルの中身を見たり、実行 したりすることもできます。

    $ cd ~mmr14135/PicBox
    $ cat ピーマン2015.xcf
    

    これはテキストファイルではないので、 とんでもない光景になります。

    $ gimp ピーマン2015.xcf &
    

    で他人の部屋で他人の描いた絵を観ている状態となります。

    ファイルの場所を移動をするのは mv コマンドです。
    自分のホームディレクトリにあるreadme.txt をさっき作った training ディレクトリ(~/training)に移動してみましょう。

    $ cd 
    $ ls
    readme.txt ....
    $ mv readme.txt ~/training/
    $ cd ~/training
    $ ls
    readme.txt
    

    ファイル名の変更も mv コマンドです。readme.txt を koreyome.txt という名前に変更してみましょう。

    $ mv readme.txt koreyome.txt
    $ ls
    koreyome.txt
    

    ファイルを削除するコマンドは rm です。

    $ rm koreyome.txt
    $ ls
    
    

    ディレクトリを削除するときはオプション -r です。(あるいは、 rmdir

    $ cd ~
    $ rm -r training
    

    アクセス権の変更

    ファイルやディレクトリのアクセス権の変更をします。UNIX では人に見られたくないファイルやディレクトリを他人にアクセスされないようにすることが簡単に出来ます。 RGL 

    まず、ファイルやディレクトリのアクセス権を調べます。 調べるには ls コマンドを用いますが、-l のオプションを併用します。

    $ ls -l .bashrc
    -rw-r--r-- 1 mmr14135 teacher 124  4月  1 09:26 2014 .bashrc
    

    ここで、左端のカラム -rwxr--r-- に注目します。
    この記号は 1+3+3+3 のグループに分けて読み取ります。 各々のグループが示している意味は以下になります。

    記号 r,w,x の意味は

    文字 数値 内容
    r 4 読みだし可(readable)
    w 2 書き込み可(writable)
    x 1 実行可能(executable)

    これらのアクセス権を変更するコマンドが chmod です。 アクセス権は以下の規則で決められる数字を3桁に用いて表現します。

    文字 数値 内容
    rwx 7 (4+2+1) 読み出し可+書き込み可+実行可能
    rw- 6 (4+2) 読み出し可+書き込み可
    r-x 5 (4+1) 読み出し可+実行可能
    -wx 3 (2+1) 書き込み可+実行可能

    例えば、ファイル .bashrc を自分には実行・読み・書きの権限を与え、 自分以外のユーザーには全く権限を与えないようにするには

    $ chmod 700 .bashrc
    

    としてやります。リストを見て、

    $ ls -l .bashrc
    -rwx------ 1 mmr14135 teacher 124  4月  1 09:26 2014 .bashrc
    

    左端のカラムが -rwx------- となっているか確認します。

    外部にホームページを公開しつつ、それ以外のファイルにアクセスできないよう にするためには以下のコマンドを実行します。

    $ chmod 700 -R ~
    $ chmod 755 -R ~/public_html
    $ chmod 755  ~
    

    ここのchmodのオプション -Rは 再帰的(Recursive)にそのディレクトリの中身も同じアクセス権に設定するオプションです。

    課題提出

    課題:講師(松本)のホームディレクトリ下のディレクトリExamplesにある隠しファイルを探し、 そのファイル名とその内容を松本までメールで提出せよ。

    メールの件名:情報処理演習(A2 or B2) 第2回課題
    氏名:
    学籍番号:
    ファイル名:
    内容: 

    提出期限:演習時間内

    発展


    RREVIOUS | TOP | NEXT