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

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

4.1 ファイル: 予備知識

Linux は DOS/Win にとても似たディレクトリやファイル構成になっています。 ファイルにはファイル名があり、これらは特別なルールに従います。これらは ディレクトリ内にしまわれ、その中には実行可能ファイルもあり、それらのほ とんどはコマンドスイッチをもっています。さらに、ワイルドカードやリダイ レクト、パイプを使うこともできます。ただし、DOS/Win とは微妙に異なる点 も少しだけあります。

コマンドを DOS から Linux へ翻訳する のセクションまで一気に読み飛ばすこともできますが、 私があなただったらこのまま読み続けます。

4.2 シンボリックリンク

UNIX には DOS では存在しないようなタイプのファイルがあります。 シンボリックリンクです。これはファイルやディレクトリを指し示すもの (ポインタ) で、それが指し示すファイルやディレクトリの 代わりとして使用できます。これは Windows のショートカット に似ていますね。シンボリックリンクの例として、/usr/X11R6/ を指し示す /usr/X11/dev/ttyS0/dev/ttyS1 を指し示す /dev/modem 等があります。

シンボリックリンクを作るには:

$ ln -s <file_or_dir> <linkname>

例:

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

これで /usr/doc/g77/DOC を参照する代わりに g77manual.txt を参照できます。ディレクトリを表示させた場合、リンクは以下のように見えます。

$ ls -F
g77manual.txt@
$ ls -l
(several things...)           g77manual.txt -> /usr/doc/g77/DOC

4.3 パーミッションと所有権

DOS のファイルとディレクトリは次のような属性を持ちます。 A (アーカイブ)、H (隠しファイル)、R (読み専用)、そして S (システムファイル)。 H と R だけが Linux 上では意味のあるものとなりま す。隠しファイルはドットで始まります。 R 属性についてはこのまま読み進めてください。

UNIX 上ではファイルには「パーミッション」と所有者、 そして所有グループが存在します。次の例を見てください。

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

最初のフィールドは /bin/ls のパーミッションを含み、 /bin/ls は root に所有され、グループ bin に所属します。 残りの情報は置いておいて、-rwxr-xr-x の意味を探ってみましょう。 左から右へ読んでいきます。

- はファイルのタイプを意味します(- = 普通のファイル、 d = ディレクトリ、l = リンク、等)。 rwx はファイル所有者のパーミッションを意味します (read(読み)、write(書き)、execute(実行));(ここでは group の 意味を説明しませんが、初心者ならこの意味を知らなくても やっていけるでしょう ;-) r-x はほかのユーザに対するパーミッション です(read、execute)。

ディレクトリ /bin もパーミッションを持ちます (詳しくは ディレクトリのパーミッション を参照)。 root でない限り /bin/ls ファイルを削除できないのは、パーミッションで許可されていないからです。 ファイルのパーミッションを変更するには次のようにコマンドを打ちます。

$ chmod <whoXperm> <file>

who は u (user、つまり所有者)、g (group)、o (other)、 X は +-、perm は r (read)、w (write)、か x (execute)。一般的な chmod の使い方は次のようになります。

$ chmod +x file

これでファイルを実行可能にします。

$ chmod go-rw file

所有者以外の読み書き権限を剥奪します。

$ chmod ugo+rwx file

全てのユーザに読み書き、そして実行の権限を与えます。

# chmod +s file

これは「setuid」とか、「suid」と呼ばれるファイル (全てのユーザが 所有者の権限でファイルを実行できる) を作ります。 よく見かけるのは root に setuid したファイルです。 これらは重要なシステムファイルであることがよくあります ( X サーバ等)。

数字を使うことによってパーミッションを素早く設定できます。 rwxr-xr-x は 755 と表現されることができます (全ての文字はビットに対応します:--- は 0、--x は 1、-w- は 2 、-wx は 3 というように)。 難しく見えるかもしれませんが、ちょっと使い込めばすぐ理解 できると思います。 root (スーパーユーザ) は全てのユーザのファイル権限 を変更できます。RMP。

4.4 ファイル: コマンドを翻訳する

左側は DOS コマンド、右側は対応する Linux のコマンド。

ATTRIB:         chmod
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>ATTRIB +R FILE.TXT             $ chmod 400 file.txt
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
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

注意:

4.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 は複数のセッションをあなたに与えてくれます。 これは、まるでたくさんのコンピュータを同時に扱っているみたいですね!

これらのコマンドを使うことによってディスクをフォーマットしたり、 たくさんのファイルを zip で圧縮したり、プログラムをコンパイルしたり、 アーカイブを unzip したりしつつ、同じときにプロンプトを自由 に使えます。同じことを Windows 上でやってみてどれだけ パフォーマンスに違いがあるか試してみてください(もちろんクラッシュ しなかったらの話ですが)。

4.6 リモートコンピュータ上でプログラムを実行する

remote.machine.edu という名前のリモートマシン上でプログラムを実行 するには:

$ telnet remote.machine.edu

ログインの後は好きなプログラムを実行できます。当然ですが、 あなたはリモートマシン上にもアカウントを持っている必要があります。

もしも X11 を持っているならリモートコンピュータ上で X アプリケーショ ンを実行して、それを自分の X 画面上に表示することもできます。remote.machine.edu がリモート X コンピュータで local.linux.box があなたの Linux マ シンだと想定すると local.linux.box から remote.machine.edu にある X プログラムを実行するには以下のようにします:

するとどうでしょう! prognameremote.machine.edu で起動され、 あなたのマシン上に表示されます。しかし遅くて使い物にならない のでこれをモデム間では行わないください。さらに、これは危なっかしく雑 な方法です。「Remote X Apps mini-HOWTO」 http://sunsite.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.html (日本語訳: http://www.linux.or.jp/JF/JFdocs/Remote-X-Apps.html) を読んでみてください。


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