次のページ 前のページ 目次へ

2. ファイルとプログラム

2.1 ファイルとは: 簡単な紹介

Linux には DOS によく似たファイルシステム --- すなわち、「ディレクトリ とファイルの構造」 --- があります。ファイルは一定のルールに従って名前 が付けられ、ディレクトリに保存され、いくつかのファイルは実行可能で、実 行可能なファイルにはいくつかのコマンドスイッチが用意されています。加え てワイルドカードやリダイレクト、パイプを使うことも可能です。DOS のファ イルシステムとはわずかな違いしかありません。

次に 各種コマンドの DOS から Linux への翻訳 の 章へ進んでも構いませんし、このまま読み進めてもらっても構いません。

2.2 シンボリック・リンク

Unix には DOS にない種類のファイル、すなわちシンボリック・リンクがあり ます。シンボリック・リンクはファイルやディレクトリへのポインタと考えられ、 実際のファイルやディレクトリの代りに使うことが可能です。シンボリック・ リンクは Win 95 の「ショートカット」によく似ています。シンボリック・リ ンクの例として、例えば /usr/X11/usr/X11R6 へのシ ンボリック・リンクになっており、/dev/modem/dev/cua0/dev/cua1 へのポインタになっています。

シンボリック・リンクを作るには以下のようにします。

$ ln -s <file_or_dir> <linkname>

例:

$ ln -s /usr/doc/g77/DOC g77manual.txt

これで /usr/doc/g77/DOC の代りに g77manual.txt とい うファイル名が使えます。

2.3 ファイルの許可属性と所有者

DOS のファイルとディレクトリには以下の 4 つの属性があります: A (アーカ イブ)、H (隠しファイル)、R (リードオンリー)、S (システムファイル)。こ のうち H と R の属性のみ、Linux に対応する属性があります。隠しファイル はドットで始め、リードオンリーの属性については、、もう少し読み続けてく ださい。

Unix の世界では、ファイルには各種の「許可属性(パーミッション)」と所有 者の概念があります。所有者は何らかの「グループ」に属しています。以下の 例を見てください。

$ ls -l /bin/ls
-rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*

最初の欄が /bin/ls の許可属性を示しています。所有者はルートで、 グループは bin です。のこりの情報は別の機会に説明することにして(Matt の著書がそれらを説明しています)、ここでは-rwxr-xr-x の意味を 説明します(左から右に読みます)。

- はファイルの種類を示します(- は一般のファイル、d はディレク トリ、l はリンク、などなど)。その次の 3 つ、rwx はファイルの 所有者に対する許可属性です(この例では読み出し、書きこみ、実行の全てが 可能になっています)。次の 3 つ、-xr はファイルの所有者が属す るグループに対する許可属性です(読み出しと実行のみが可能です)(この文書 ではグループについては扱いません。初心者の間はグループを気にしないでも 大丈夫です ;-)。最後の r-x はその他全てのユーザに対する許可属 性です(読み出しと実行のみが可能)。

このような許可属性になっているため、ルート以外のユーザには /bin/ls は削除できません。なぜならば、ルート以外のユーザには 書きこみ許可が与えられていないからです。ファイルの許可属性を変えるため のコマンドは

$ chmod <whoXperm> <file>

です。

ここで、who は u (ユーザ、すなわち所有者自身)、か g (ユーザの属するグループ)、o (その他のユーザ) で、X は +- になります。perm はr (読み出し) か w (書きこみ)、あるいは x (実行) のいずれかです。例え ば、

$ chmod u+x file

この指定では、ファイルの所有者に実行許可を与えます。一種のショートカッ トとして使えますね。

$ chmod go-wx file

この指定では、所有者以外(グループと一般ユーザ)の書きこみと実行許可を外 しています。

$ chmod ugo+rwx file

こうすれば誰でも読みこみや書き出し、実行が可能になります。

# chmod +s file

この指定はいわゆる ``setuid''、すなわち ``suid'' されたファイルを作り ます。このファイルは誰もがルートの権限で実行できます。

許可属性は数字で指定することも可能です。rwxr-xr-x は 755 と表 現できます(許可属性を示す各文字が一つのビットに対応します。すなわち、 --- は 0 で、--x は 1 、-w- が 2 で、 -wx は 3 等々)。一見複雑そうですが、しばらく練習すればその 意味が理解できるでしょう。

ルート、いわゆるスーパーユーザ、は全てのユーザのファイルの許可属性を変 更することができます、詳細については --- chmod について RMP してくださ い。

2.4 DOS から Linux へのコマンドの翻訳

次の表の左が DOS のコマンドで、右に示すものが対応する Linux のコマンド です。

COPY:       cp
DEL:        rm
MOVE:       mv
REN:        mv
TYPE:       more, less, cat

リダイレクトと標準入力を切り替えるオペレータは < > >> | です。

ワイルドカード: * ?

nul: /dev/null

prn, lpt1: /dev/lp0 か /dev/lp1; lpr

いくつか例を示します。

DOS                                     Linux
---------------------------------------------------------------------
C:\GUIDO>copy joe.txt joe.doc         $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total               $ cat * > total
C:\GUIDO>copy fractals.doc prn        $ lpr fractals.doc
C:\GUIDO>del temp                     $ rm temp
C:\GUIDO>del *.bak                    $ rm *~
C:\GUIDO>move paper.txt tmp\          $ mv paper.txt tmp/
C:\GUIDO>ren paper.txt paper.asc      $ mv paper.txt paper.asc
C:\GUIDO>print letter.txt             $ lpr letter.txt
C:\GUIDO>type letter.txt              $ more letter.txt
C:\GUIDO>type letter.txt              $ less letter.txt
C:\GUIDO>type letter.txt > nul        $ cat letter.txt > /dev/null
   該当なし                           $ more *.txt *.asc
   該当なし                           $ cat section*.txt | less

注意点:

2.5 プログラムの起動: マルチタスクとセッション

プログラムを動かすには DOS と同様にそのコマンドの名前を打ちこむだけで す。起動したいプログラムがパス環境変数 ( システムの初期設定を参照) が通っているディレク トリにあれば、そのまま実行することが可能です。DOS とは異なり、Linux で は今いるディレクトリにあるプログラムでも、パスが通っていないと実行する ことはできません。その場合、プログラム名を prog とすると ./prog と入力します。

典型的なコマンドラインは以下のようになります。

$ command -s1 -s2 ... -sn par1 par2 ... parn < input > output

ここで -s1, ... ,-sn はプログラムのオプションスイッ チで、par1, ..., parn はプログラムのパラメータです。 以下のように ; で区切って複数のコマンドを並べることも可能です。

$ command1 ; command2 ; ... ; commandn

これでプログラムの動かし方については終りですが、もう一歩を進めるのは簡 単でしょう。Linux を使う理由の一つに、Linux はマルチタスク OS で、複数 のプログラム(以後プロセスと呼びます)を同時に動かせるから、というのがあ ります。この機能を使えばプログラムをバックグラウンドで実行しながら今の 仕事を続けることも可能です。加えて、Linux では複数のセッションを同時に 動かすことも可能です。その場合、同時に複数のコンピュータを使っているよ うに感じます。

2.6 離れた場所にあるコンピュータ(リモートコンピュータ)でプログラムを実行する

ホスト名が remote.bigone.edu のリモートコンピュータでプログラ ムを実行するには、まず

$ telnet remote.bigone.edu

してそのコンピュータにログインします。

ログインすれば好きなプログラムを動かすことができます。言うまでもありま せんが、remote.bigone.edu にはあなたのアカウントが必要です。

X11 を使えば、X 用のアプリケーションをリモートコンピュータで実行して、 表示を手元のマシンの X ウィンドウの画面に出力することも可能です。 remote.bigone.edu が X ウィンドウの動かせるリモートコンピュー タで local.linux.box をあなたの Linux マシンとします。 local.linux.box から remote.bigone.edu にある X のプログラムを動かすには以下のようにします。

これで、prognameremote.bigone.edu で起動して、 画面があなたの local.linux.box で表示されます。でも、これは ppp のような遅い接続経由ではやらない方が無難です。


次のページ 前のページ 目次へ