UNIX入門(初級2)
[
コンピュータの目次に戻る] [初級1に戻る]
  1. ファイルとディレクトリの概念
  2. ls -- ファイルとディレクトリ
  3. その他 -- ファイル操作コマンド
  4. chmod -- ファイル属性とその変更
    1. ファイル属性とは?
    2. ファイル属性は、ユーザ、グループ、その他の3種類ある
    3. chmod の例1(ugo+-式)
    4. chmod の例2(755式)
  5. tcsh を使おう
    1. 前に打ったコマンドを復活する
    2. ファイル名の補完


  1. ファイルとディレクトリの概念 [top]

    以下まず、たいした話をするわけじゃないですが、DOS さえ知らない人はすぐに理解出来ないでしょうね。

    「ファイルとは何か」とか言われても、僕なんかですと、答えられないです。「データの集り」とか、よく言われますが、コンソールもデバイスもファイルですもんね。ディレクトリだってファイルだろ。もう、なんのこっちゃ、という感じになるでしょう。結局は同じものなんですが、見掛け上、違ったりします。そのあたりのことが分かってないと、もう先へ進めません。

    ここでは、次のことはもう分かってることにしてください。具体的なUNIX コマンドが分からなくてもいいです。DOSでやったことがある(出来れば、DOSでは当たり前にやってた)、程度で構いません。

    他方、DOSに無かったもの、DOSと違うもの、としては、

    それから、以下、具体的にファイル操作に関するコマンドを説明してゆきます。みなさんは、実際に試してみることが大事です。その際に、テスト用のファイルを、カレントディレクトリに作って、それでテストしてみる、という作業が必要です。テストファイルは、


    bidai{yourname} % cp /dev/null test

    とか、

    bidai{yourname} % ls -l >test

    とかやれば、作れます。

    それと、一度打ったコマンドは、上向きのアローキー(矢印キー)を何度か押すと、再び出てきますから、使ってください。

  2. ls -- ファイルとディレクトリ [top]

    次に覚えるコマンドが、ls です。list の略で、ファイルのリストを一覧します。DOS のdirにあたります。


    bidai{yourname} % ls
    dead.letter   lastmember.sh* nsmail/     tmp2@
    ipadress.bidai mbox      
    こんな感じで、ファイル名が表示されます。 (みなさんの.cshrc は、最初からすこしいじってあって、ls が、"ls -F"に設定してあります。だから、ディレクトリなら / が、実行ファイルなら* が、リンクなら@ が、それぞれファイルの末尾に付くようになってます。)

    -lオプションを付けると、ファイルのより詳しい情報が出ます。


    bidai{yourname} % ls -l
    -rw-r--r--  1 yourname   397 Oct 3 13:42 dead.letter
    -rw-r--r--  1 yourname  3263 Mar 12 1997 ipadress.bidai
    -rwxr--r--  1 yourname    63 May 22 16:01 lastmember.sh*
    -rw------  1 yourname   345 Oct 2 22:29 mbox
    drwx-----  2 yourname   512 May 10 01:38 nsmail/
    lrwxrwxrwx  1 yourname   10 Feb 19 1997 tmp2 -> /pub2/tmp/

    ls -l コマンドは、1行1ファイル情報、という表示形式になってます(画面の幅を広くして見てください)。それぞれの意味は、次の通りです(色で区別してください)。

    ファイル属性  リンク数  所有者名  サイズ  タイムスタンプ  ファイル名 

    ファイル属性については後述します。他は、解れ。

    ほかに、オプションとして、-a があります。-a 単独でも、-l と組合わせて(-alなどとする。 -la も-l -a も同じ)も使えます。-a は、ヒドュン・ファイル(隠しファイル。おもにシステム関係のファイル)を表示するものです。みんなのホームディレクトリは、初期設定でヒドゥンファイルしか有りませんから、ls -a か ls -la で見てください。

    以下、例。


    bidai{yourname} % ls -la
    -rw-r--r-- 1 yourname  397 Oct 3 13:42 dead.letter
    -rw-r--r-- 1 yourname  3263 Mar 12 1997 ipadress.bidai
    -rwxr--r-- 1 yourname   63 May 22 16:01 lastmember.sh*
    -rw------- 1 yourname  345 Oct 2 22:29 mbox
    drwx------ 2 yourname  512 May 10 01:38 nsmail/
    lrwxrwxrwx 1 yourname   10 Feb 19 1997 tmp2 -> /pub2/tmp/
    -rw-r--r-- 1 yourname  2741 Feb 15 1997 .login
    -rw-r--r-- 1 yourname  2633 Jan 7 1997 .login.org
    -rw-r--r-- 1 yourname  104 Feb 15 1997 .profile
    -rw-r--r-- 1 yourname  104 Feb 15 1997 .cshrc
    -rw-r--r-- 1 yourname  104 Feb 15 1997 .forward

    赤字のファイルが、-a によって見えるようになったファイルです。すべて、「ピリオド」で始る名前ですが、ドット・ファイルなどと言います。これらは、loginしたときの自分の環境設定のファイルです。いずれ、中味をみて、その設定を変更していって見てください。

  3. その他 -- ファイル操作コマンド [top]

    他に、ファイル操作関係のコマンドを列記します。

    コマンド動作(語源)(ほぼ)対応するDOSコマンド
    rmファイルの削除(remove)del,delete, erase
    cpファイルのコピー(copy)copy
    catファイルの表示出力連結(concatenete)type, copy +
    moreファイルのページ毎の表示(more)more
    mvファイルのリネーム、移動(move)ren,rename
    mkdirディレクトリの作成(make dir)md
    rmdirディレクトリの削除(remove dir)rd
    cdディレクトリの移動(ch dir)cd
    pwdカレントディレクトリの表示(print working dir)cd
    chmodファイル属性の変更(change mode)atrib

    具体的な動作は、本でも読んで確認してください。DOSと対応しているとは言え、なんか違います。 ていうより、DOSにも、これらのUNIXコマンドはほとんどフリーで移植されていて、それを使ってましたね、ぼくなんざ(なはは)。atrib なんて使ったことないよ。

    参考文献ですが、あんまりよく知りません。順序良く覚えるなら、やっぱりアスキーのUNIXスーパーラーニングのシリーズかな。コマンドのレファレンスとしては、ナツメ社のナツメ・ハンディリファレンスのUNIXリファレンス(だったかな)が好きです。2300円じゃなかったかな。この本は、前任校に置土産してきたので手元になく、かわりに技術評論社のアドバンスト・リファレンス「UNIX活用ハンドブック」ってのを買ったのですが、これ、コマンドがアルファベットでひけず(索引はあるが)、内容別に並んでいるので、すげ分かりにくいです。失敗した。

  4. chmod -- ファイル属性とその変更 [top]

    1. ファイル属性とは?

      これらのコマンドのうち、やっぱりchmodだけ、書いておきます。change mode コマンドです。ls -l したとき、行頭に、


      drwxrwxrwx 1 yourname ……以下略
      -rw-r--r-- 1 yourname ……以下略
      みたいなのが有りますね。これは、そのファイルの属性を表示してます。(d からx まで数えてみて!)全部で10文字から成る記号です。ファイルの属性とは何か。この10文字を表にして説明します。
      最初の1文字目は、ファイルのタイプです。-, d, l の区別がつけばよいでしょう。
      記号その意味、区別
      -ファイル
      dディレクトリ
      lリンク

      2番目以降最後までの9文字は、ファイルへのアクセス権です。これは、ごちゃごちゃしてますが、結局はr w x - の4種類しか有りません。それぞれの文字が、read 、write、exec、null(どれでもない、つまりゼロ)の意味を持ちます。- にも立派な意味があります。そして、「この文字があれば、それが出来る」、「その文字がなく、 - になっていれば、それは出来ない」という意味です。例えば、r-x なんて有れば、read属性とexec属性が有る(readビットと実行ビットが立っている)などと言います。
      記号その意味(許可内容)追加説明
      rread(読める)more 等で読める
      wwrite(書込み出来る)編集保存、削除が出来る
      xexec(実行出来る)コマンドとして使える。
      ディレクトリなら、移動出来る
      -許可の否定ダメッ、ってこと
      read は、more で内容が読める、write はvi(スクリンエディタ)などで編集したり、rm で削除したり出来る、exec は、プログラムとして実行出来る、という意味です。DOSでは、拡張子がcom exe bat のファイルしか実行出来ませんでしたが、UNIXではこのx ビットが立っていれば、実行出来ます。勿論、メチャクチャかいてあるだけのテキストファイルも、実行出来ます(意味無いが)。逆に、立派なプログラムでも、このbit が立ってないと実行出来ません。また、ディレクトリでxビットが立っている場合、「そのディレクトリに移動出来る」という意味になります。

    2. ファイル属性は、ユーザ、グループ、その他の3種類ある

      さて、これからが本題。rwx はこの順番で、3組有ります。つまり rwx rwx rwx と、3組にわけて考えます。再掲。


      - rw- r-- r--  1 yourname  397 Oct 3 13:42 dead.letter
      - rwx --- ---  1 yourname   63 May 22 16:01 lastmember.sh*
      - rwx rwx rwx  1 yourname   63 May 22 16:01 lastmember2.sh*
      1. 最初の3文字(1組目)は、ファイル所有者(user)に関するファイル属性。
      2. 次の3文字(2組目)は、ファイル所有者の属するグループユーザ(group)に関するファイル属性。
      3. 最後の3文字(3組目)は、それ以外部外者(other)に関するファイル属性。

      いまの例で言えば、

      1. dead.letter は、所有者は読み書き出来る、グループユーザや部外者は読むだけ出来る。
        「所有者」は前述。この場合、yourname が所有者でしたね。
      2. lastmember.sh は、所有者は読み書き実行出来る、グループユーザや部外者は触れない。
      3. lastmember2.sh は、総てのひとが読書き実行出来る(つまり、人がrm 削除することが出来る。かなり危険な状況)。

      [余談]
      DOS (FATおよびVFAT)にも、ファイル属性がありましたね。archive、read、write、hiden、system の4種類でしたっけ。DOSのファイル属性はすべて、UNIXでいうところの userにあたるわけです。だって、シングルユーザOSですからね。
      win95も結局シングルユーザOSですね。win95なら「右クリック」→「プロパティ」でファイル属性のチェック欄が出てきます。視覚的に変更出来るのは結構だけど、でも、100個くらい一気に変えたい時なんか、どうすんのかね、GUIは。いちいちマウスでやってくのかね。コマンドラインからなら、UNIXでもDOSでもchmod -o *.txtで一発なのに。ほんとバカ。

    3. chmod の例1(ugo+-式)

      これらファイル属性を変更するのが、chmod コマンド(change mode)です。user、group、other に対して、rwx それぞれを、+(ビットを立てる)か、−(属性を消す)か、指定します。
      chmod コマンドは、UNIXシェルをいじる場合はもとより、ホームページを持つ場合など、絶対に理解しておかなくてはならないコマンドです。

      以下、具体例。

      bidai{yourname} % chmod go-wx filename
      filename を、グループユーザと部外者には書込み・実行が出来ないようにする。

      bidai{yourname} % chmod go+r filename
      filename を、グループユーザと部外者には書込み・実行が出来ないようにする。

      bidai{yourname} % chmod u-wr filename
      filename を、自分で読み書き出来ないようにする(でも、削除は出来ます。実際には)。

      bidai{yourname} % chmod o-xw dirname
      dirname(ディレクトリ) を、部外者は移動出来ない(入れない)、削除出来ない、ようにする。

    4. chmod の例2(755式)

      chmod のオプションは、[ugo][+-][rwx] という組合せのほかに、bit数で指定する方法が有ります。こちらのほうが、一般的ですね。 3組それぞれ8bit の値を持ち、r = 4, w = 2, x = 1, とします。立ってるビットをたして、例えば、rwx なら 4+2+1=7、r-x なら5、r-- なら4、---なら0。この数字を、u g o三つならべて3桁の数にして、オプションとします。
      属性r w x
      そのbit値4 2 1
      以下例 bit数
      rwx +4+2+17
      rw- +4+2+06
      r-x +4+0+15
      r-- +4+0+04
      --- +0+0+00
      この数字を、u g o三つならべて3桁の数にして、オプションとします(それぞれ色で対応してます)。

      bidai{yourname} % chmod 755 filename
      -rwxr-xr-xとなる

      bidai{yourname} % chmod 644 filename
      -rw-r--r--となる

      ugo+-rwx 式は属性の追加(現状に対する変更)ですが、755式は、絶対的な変更(前の設定をちゃらにしていちからやり直す)です。

      とにかく、いろいろやってみよう。自分のディレクトリ内なら、ドットファイル以外は、削除しても大丈夫ですから。

  5. tcsh を使おう [top]

    シェルって、わかるよね。カーネルの対概念みたいなものです。DOSなら、msdos.sys とio.sys がカーネルで、command.com がシェルでした。DOS ver5 以上では、ファイルマネージャ風のシェルも有ったようです(つかえねえけど)。windowsは、よくしらんけど、explore がシェルみたいな感じです(けど、ほんと?)。
    シェルってのは、コマンドを受付けて、カーネルに渡す役目を果したり、他の環境設定を提供したりします。
    UNIXのシェルには、born shell(bsh)系(system V系)と、csh系(バークレー系)とがあります。美大のSunOSはcsh(シーシェルと訓む)系です。が、このcshをもっと機能アップしたものに、tcsh が有ります。美大サーバ上のユーザは、デフォルトで、tcsh でログインするようになってます。以上、前振り。

    tcsh は、あんまり使いこなせてないのですが(それでも、ぼくがインストールしたんだよ)、次のような機能があるので便利でしょう。

    1. 前に打ったコマンドを復活する
      いわゆるヒストリー機能というヤツです。あれ、これは、cshにもあるのか。矢印キー(上)をおすと前のコマンドが、(下キー)を押すと次のコマンドが、出てきます。

      DOSにも、history.com やksh.com があったよね。

    2. ファイル名の補完
      ファイル名を正確に打つのは、結構大変です。UNIXでは、DOS(FAT)と違い8.3以上のファイル名が使えますし、WIN95(VFAT)と違い大文字小文字を区別します。メチャクチャ長くて、大文字小文字入乱れたファイル名を正確に入力するのは、ホネです。
      ファイル名を、最初数文字打込んだら、タブを押してみてください。

      bidai{yourname} % chmod 755 fi←ここでタブ
      すると、

      bidai{yourname} % chmod 755 filename
      こう、残りの部分を補完してくれる。

      fi で始るファイルが他にもあれば、同じ部分まで表示して止ります。プラットホームに拠りますが、フィーンとかいう警告音がなります。その場合は、ctrl-dを押します。すると、ファイルの一覧が出ます。

      bidai{yourname} % chmod 755 fi←ここでctrl-d
      fime filename find

      こんな感じ。残りの違う部分を手入力し、またタブを押します。


      これ、tabだけでどちらもやってくれたほうが、便利だよね、やっぱ。
      ほかに、キーアサインも、vi風、emanc風などと変えられるはずなのですが、取敢えず、vi風にしてあります。

      コマンドラインの行頭では、path の通ったプログラムファイル(x ビットが立ってるファイル)が補完されます。

      日本語のオンラインマニュアルもあります。

      bidai{yourname} % man tcsh
      とやってみて下さい。出てきます。man については、

      bidai{yourname} % man man
      とやってみて下さい。わかります。

    [余談]
    cshもそうだが、tcshも、実は使いにくいんだよね。DOSのVZのコマンド環境のほうが、よっぽど使易いよ。だれか、作ってくれないのかなあ。VZライクなコマンドインタープリターを。UNIXの本に、「UNIXには、vi というつかいやすいスクリーンエディタが標準でついています」なんて記述をみて、びびったこともあります。DOSを使ってた頃、人のパソコン(VZがない、あっても設定が違う)を触るために、僕はテンプレートをマスターしました。こういうワザが使えるのは、かっこいいけど(あるいは、人に驚かれたり、笑われたりして楽しめるが)、あんまり役に立たないよね。csh の複雑さも、それに近いものを感じるなあ。いや、もちろん、tcsh なんかをつかいこなせると、すごく楽しいんでしょうけどね。ひまもないよ。




[コンピュータの目次に戻る] [ホームページに戻る]