以下まず、たいした話をするわけじゃないですが、DOS さえ知らない人はすぐに理解出来ないでしょうね。
「ファイルとは何か」とか言われても、僕なんかですと、答えられないです。「データの集り」とか、よく言われますが、コンソールもデバイスもファイルですもんね。ディレクトリだってファイルだろ。もう、なんのこっちゃ、という感じになるでしょう。結局は同じものなんですが、見掛け上、違ったりします。そのあたりのことが分かってないと、もう先へ進めません。
ここでは、次のことはもう分かってることにしてください。具体的なUNIX コマンドが分からなくてもいいです。DOSでやったことがある(出来れば、DOSでは当たり前にやってた)、程度で構いません。
他方、DOSに無かったもの、DOSと違うもの、としては、
それから、以下、具体的にファイル操作に関するコマンドを説明してゆきます。みなさんは、実際に試してみることが大事です。その際に、テスト用のファイルを、カレントディレクトリに作って、それでテストしてみる、という作業が必要です。テストファイルは、
とか、
bidai{yourname} % ls -l >test
とかやれば、作れます。
bidai{yourname} % cp /dev/null test
それと、一度打ったコマンドは、上向きのアローキー(矢印キー)を何度か押すと、再び出てきますから、使ってください。
次に覚えるコマンドが、ls です。list の略で、ファイルのリストを一覧します。DOS のdirにあたります。
-lオプションを付けると、ファイルのより詳しい情報が出ます。
ls -l コマンドは、1行1ファイル情報、という表示形式になってます(画面の幅を広くして見てください)。それぞれの意味は、次の通りです(色で区別してください)。
ファイル属性
リンク数
所有者名
サイズ
タイムスタンプ
ファイル名
ファイル属性については後述します。他は、解れ。
ほかに、オプションとして、-a があります。-a 単独でも、-l と組合わせて(-alなどとする。 -la も-l -a も同じ)も使えます。-a は、ヒドュン・ファイル(隠しファイル。おもにシステム関係のファイル)を表示するものです。みんなのホームディレクトリは、初期設定でヒドゥンファイルしか有りませんから、ls -a か ls -la で見てください。
以下、例。
赤字のファイルが、-a によって見えるようになったファイルです。すべて、「ピリオド」で始る名前ですが、ドット・ファイルなどと言います。これらは、loginしたときの自分の環境設定のファイルです。いずれ、中味をみて、その設定を変更していって見てください。
他に、ファイル操作関係のコマンドを列記します。
具体的な動作は、本でも読んで確認してください。DOSと対応しているとは言え、なんか違います。
ていうより、DOSにも、これらのUNIXコマンドはほとんどフリーで移植されていて、それを使ってましたね、ぼくなんざ(なはは)。atrib なんて使ったことないよ。
参考文献ですが、あんまりよく知りません。順序良く覚えるなら、やっぱりアスキーのUNIXスーパーラーニングのシリーズかな。コマンドのレファレンスとしては、ナツメ社のナツメ・ハンディリファレンスのUNIXリファレンス(だったかな)が好きです。2300円じゃなかったかな。この本は、前任校に置土産してきたので手元になく、かわりに技術評論社のアドバンスト・リファレンス「UNIX活用ハンドブック」ってのを買ったのですが、これ、コマンドがアルファベットでひけず(索引はあるが)、内容別に並んでいるので、すげ分かりにくいです。失敗した。
これらのコマンドのうち、やっぱりchmodだけ、書いておきます。change mode コマンドです。ls -l したとき、行頭に、
2番目以降最後までの9文字は、ファイルへのアクセス権です。これは、ごちゃごちゃしてますが、結局はr w x - の4種類しか有りません。それぞれの文字が、read 、write、exec、null(どれでもない、つまりゼロ)の意味を持ちます。- にも立派な意味があります。そして、「この文字があれば、それが出来る」、「その文字がなく、 - になっていれば、それは出来ない」という意味です。例えば、r-x なんて有れば、read属性とexec属性が有る(readビットと実行ビットが立っている)などと言います。
さて、これからが本題。rwx はこの順番で、3組有ります。つまり
rwx
rwx
rwx
と、3組にわけて考えます。再掲。
いまの例で言えば、
[余談]
これらファイル属性を変更するのが、chmod コマンド(change mode)です。user、group、other に対して、rwx それぞれを、+(ビットを立てる)か、−(属性を消す)か、指定します。
以下、具体例。
bidai{yourname} % chmod go-wx filename
bidai{yourname} % chmod go+r filename
bidai{yourname} % chmod u-wr filename
bidai{yourname} % chmod o-xw dirname
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桁の数にして、オプションとします。
bidai{yourname} % chmod 755 filename
bidai{yourname} % chmod
644
filename
ugo+-rwx 式は属性の追加(現状に対する変更)ですが、755式は、絶対的な変更(前の設定をちゃらにしていちからやり直す)です。
とにかく、いろいろやってみよう。自分のディレクトリ内なら、ドットファイル以外は、削除しても大丈夫ですから。
シェルって、わかるよね。カーネルの対概念みたいなものです。DOSなら、msdos.sys とio.sys がカーネルで、command.com がシェルでした。DOS ver5 以上では、ファイルマネージャ風のシェルも有ったようです(つかえねえけど)。windowsは、よくしらんけど、explore がシェルみたいな感じです(けど、ほんと?)。
tcsh は、あんまり使いこなせてないのですが(それでも、ぼくがインストールしたんだよ)、次のような機能があるので便利でしょう。
bidai{yourname} % chmod 755 fi←ここでタブ
bidai{yourname} % chmod 755 filename
fi で始るファイルが他にもあれば、同じ部分まで表示して止ります。プラットホームに拠りますが、フィーンとかいう警告音がなります。その場合は、ctrl-dを押します。すると、ファイルの一覧が出ます。
bidai{yourname} % chmod 755 fi←ここでctrl-d
こんな感じ。残りの違う部分を手入力し、またタブを押します。
コマンドラインの行頭では、path の通ったプログラムファイル(x ビットが立ってるファイル)が補完されます。
日本語のオンラインマニュアルもあります。
bidai{yourname} % man tcsh
bidai{yourname} % man man
[余談]
こんな感じで、ファイル名が表示されます。
(みなさんの.cshrc は、最初からすこしいじってあって、ls が、"ls -F"に設定してあります。だから、ディレクトリなら / が、実行ファイルなら* が、リンクなら@ が、それぞれファイルの末尾に付くようになってます。)
bidai{yourname} % ls
dead.letter lastmember.sh* nsmail/ tmp2@
ipadress.bidai mbox
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/
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
コマンド 動作(語源) (ほぼ)対応する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
みたいなのが有りますね。これは、そのファイルの属性を表示してます。(d からx まで数えてみて!)全部で10文字から成る記号です。ファイルの属性とは何か。この10文字を表にして説明します。
drwxrwxrwx 1 yourname ……以下略
-rw-r--r-- 1 yourname ……以下略
最初の1文字目は、ファイルのタイプです。-, d, l の区別がつけばよいでしょう。
記号 その意味、区別 - ファイル d ディレクトリ l リンク
read は、more で内容が読める、write はvi(スクリンエディタ)などで編集したり、rm で削除したり出来る、exec は、プログラムとして実行出来る、という意味です。DOSでは、拡張子がcom exe bat のファイルしか実行出来ませんでしたが、UNIXではこのx ビットが立っていれば、実行出来ます。勿論、メチャクチャかいてあるだけのテキストファイルも、実行出来ます(意味無いが)。逆に、立派なプログラムでも、このbit が立ってないと実行出来ません。また、ディレクトリでxビットが立っている場合、「そのディレクトリに移動出来る」という意味になります。
記号 その意味(許可内容) 追加説明 r read(読める) more 等で読める w write(書込み出来る) 編集保存、削除が出来る x exec(実行出来る) コマンドとして使える。
ディレクトリなら、移動出来る- 許可の否定 ダメッ、ってこと
-
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*
「所有者」は前述。この場合、yourname が所有者でしたね。
DOS (FATおよびVFAT)にも、ファイル属性がありましたね。archive、read、write、hiden、system の4種類でしたっけ。DOSのファイル属性はすべて、UNIXでいうところの userにあたるわけです。だって、シングルユーザOSですからね。
win95も結局シングルユーザOSですね。win95なら「右クリック」→「プロパティ」でファイル属性のチェック欄が出てきます。視覚的に変更出来るのは結構だけど、でも、100個くらい一気に変えたい時なんか、どうすんのかね、GUIは。いちいちマウスでやってくのかね。コマンドラインからなら、UNIXでもDOSでもchmod -o *.txtで一発なのに。ほんとバカ。
chmod コマンドは、UNIXシェルをいじる場合はもとより、ホームページを持つ場合など、絶対に理解しておかなくてはならないコマンドです。
filename を、グループユーザと部外者には書込み・実行が出来ないようにする。
filename を、グループユーザと部外者には書込み・実行が出来ないようにする。
filename を、自分で読み書き出来ないようにする(でも、削除は出来ます。実際には)。
dirname(ディレクトリ) を、部外者は移動出来ない(入れない)、削除出来ない、ようにする。
この数字を、u g o三つならべて3桁の数にして、オプションとします(それぞれ色で対応してます)。
属性 r w x そのbit値 4 2 1 以下例 bit数 rwx +4 +2 +1 7 rw- +4 +2 +0 6 r-x +4 +0 +1 5 r-- +4 +0 +0 4 --- +0 +0 +0 0
-rwxr-xr-xとなる
-rw-r--r--となる
シェルってのは、コマンドを受付けて、カーネルに渡す役目を果したり、他の環境設定を提供したりします。
UNIXのシェルには、born shell(bsh)系(system V系)と、csh系(バークレー系)とがあります。美大のSunOSはcsh(シーシェルと訓む)系です。が、このcshをもっと機能アップしたものに、tcsh が有ります。美大サーバ上のユーザは、デフォルトで、tcsh でログインするようになってます。以上、前振り。
いわゆるヒストリー機能というヤツです。あれ、これは、cshにもあるのか。矢印キー(上)をおすと前のコマンドが、(下キー)を押すと次のコマンドが、出てきます。
DOSにも、history.com やksh.com があったよね。
ファイル名を正確に打つのは、結構大変です。UNIXでは、DOS(FAT)と違い8.3以上のファイル名が使えますし、WIN95(VFAT)と違い大文字小文字を区別します。メチャクチャ長くて、大文字小文字入乱れたファイル名を正確に入力するのは、ホネです。
ファイル名を、最初数文字打込んだら、タブを押してみてください。
すると、
こう、残りの部分を補完してくれる。
fime filename find
これ、tabだけでどちらもやってくれたほうが、便利だよね、やっぱ。
ほかに、キーアサインも、vi風、emanc風などと変えられるはずなのですが、取敢えず、vi風にしてあります。
とやってみて下さい。出てきます。man については、
とやってみて下さい。わかります。
cshもそうだが、tcshも、実は使いにくいんだよね。DOSのVZのコマンド環境のほうが、よっぽど使易いよ。だれか、作ってくれないのかなあ。VZライクなコマンドインタープリターを。UNIXの本に、「UNIXには、vi というつかいやすいスクリーンエディタが標準でついています」なんて記述をみて、びびったこともあります。DOSを使ってた頃、人のパソコン(VZがない、あっても設定が違う)を触るために、僕はテンプレートをマスターしました。こういうワザが使えるのは、かっこいいけど(あるいは、人に驚かれたり、笑われたりして楽しめるが)、あんまり役に立たないよね。csh の複雑さも、それに近いものを感じるなあ。いや、もちろん、tcsh なんかをつかいこなせると、すごく楽しいんでしょうけどね。ひまもないよ。