<!doctype linuxdoctr system>

<article>

<title> From DOS to Linux HOWTO 

<author> By Guido Gonzato <tt>&lt;guido@ibogfs.df.unibo.it&gt;</tt>
<date>v1．0, 11 December 1996
<trans> こじまみつひろ <tt>&lt;isle@st.rim.or.jp&gt;</tt>

<abstract>

<!-- 
This HOWTO is dedicated to all the (soon to be former?) DOS users who have 
just taken the plunge and decided to switch to Linux, the free Unix clone 
for 386+ computers． Given the similarities between DOS and Unix, the purpose 
of this document is to help the reader translate his or her knowledge of 
DOS into the Linux environment, so as to be productive asap．
-->

この HOWTO は、DOS から 386 以上のコンピュータ用のフリー Unix クローン
である Linux に乗り替えようと決心した全てのユーザのために書かれました。
この文書の目的は、DOS と Unix の間の類似性を紹介して、DOS ユーザが持っ
ている知識を Linux 環境で応用できるようになり、すみやかに Linux 上で仕
事ができるようにすることです。

</abstract>

<toc>

<sect>前置き

<p>

<sect1>Linux はあなたに適していますか?

<p>
DOS から Linux へ乗り替えたいのですか?それはいい考えです。でも、注意
してください。Linux はあなたの役に立たないかも知れません。卑見では、
「最良のコンピュータ」や「最良のオペレーティングシステム」などは存在し
ません: それらは使う人が何をしたいかに依存します。ですから、私は Linux 
が万人にとっての最善の解だとは思っていません。例え Linux が数々の商用
の OS よりも技術的に優れていたとしても、です。もしあなたの必要とするも
のがプログラミングやインターネット、TeX といった技術的なソフトウェアな
らば、Linux はきわめて役に立つことでしょう。しかし、主に使うものが、市
販のアプリケーションソフトだったり、コマンドを憶えたりタイプするのが面
倒だと感じるならば、何か別のものを探した方がいいでしょう。

Linux は(少なくとも現時点では) Windows や Mac ほどには設定が簡単にはなっ
ていませんので、入門の際に多少の苦労は伴います。いくつか注意もしてきま
したが、もしあなたが「正しい」タイプのユーザならば、Linux の世界がコン
ピュータの楽園のように感じられるでしょう。それは 100&percnt;保証できま
す。Linux が役に立つかどうかはあなた次第です。それに、Linux は 
DOS/Windows と同じマシンに共存できることもお忘れなく。

この HOWTO の前提条件として、

<itemize>

<item> 基本的な DOS のコマンドと概念を理解していること

<item> Linux と可能ならば X ウィンドウシステムが適切に PC にインストー
ルされていること。日本語を使いたいならば、JE がインストールされている
こと。

<item> シェル ---DOS の<tt>COMMAND．COM</tt>の同等品---が<tt>bash</tt> であること。

<item> このガイドが不完全な入門書であることを理解していること。より詳
しくは Matt Welsh の ``Linux Installation and Getting Started'' と/あ
るいは Larry Greenfield の ``Linux User Guide''
<tt>
(<htmlurl url="ftp://sunsite.unc.edu:/pub/Linux/docs/LDP/"
name="ftp://sunsite.unc.edu:/pub/Linux/docs/LDP/"></tt>) を御覧ください。

</itemize>

この howto は ``From DOS to Linux - Quick!'' mini-howto に置き替るもの
です。

<sect1>次は何?

<p>
Linux と必要なプログラムを PC にインストール済とします。自分用のアカ
ウントがあり(もし無ければ、今すぐ <tt>adduser</tt> して作ってください)、
Linux は起動しています。あなたのログイン名とパスワードを入力しました。
そして、スクリーンをみながら考えています: 「さて、、どうしよう?」

落胆する必要はありません。現在、あなたは DOS でしていたことと同じこと
やさらにもっと色々なことができるようになりつつあるのです。Linux の代り
に DOS を使っていれば、次のような作業をしていることでしょう。

<itemize>

<item>プログラムを動かして、ファイルを作ったり、コピーしたり、閲覧した
り、削除したり、印刷したり、名前を変えたり、、など。

<item>ディレクトリを移動(CD)したり、作成したり(MD)、消去したり(RD)、リ
ストを取ったり(DIR)、、など。

<item> フロッピーをフォーマットして、ファイルをフロッピーとやりとりす
る。

<item> <tt>AUTOEXEC．BAT</tt> や<tt>CONFIG．SYS</tt> を修正する。

<item> 専用のバッチファイル(．BAT ファイル)を作ったり、<tt>QBasic</tt> 
でプログラムしたりする。

<item> その他、1&percnt; ほどの仕事をする。

</itemize>

これらの仕事は Linux でも DOS 同様の方法で行うことが可能です。平均的な
ユーザは 100 個以上ある DOS のコマンドのほんの一部しか使っていません: 
同じことは Linux についても言えます。

先に進む前に少しだけチェックしておきましょう。

<itemize>

<item> まず最初に終了の仕方を説明します。テキストモードの画面にいれば 
CTRL-ALT-DEL を同時に押し、システムが内部処理を終えて、「準備が整った
よ」というメッセージを出すまで待ってから PC の電源を切ります。X ウィン
ドウを使っている場合、まず CTRL-ALT-BACKSPACE を押して X ウィンドウを
終了させてから CTRL-ALT-DEL します。直接 PC の電源を切ったり、リセット
してはいけません。ファイルシステムに重大なダメージを与える恐れがありま
す。

<item> DOS とは異なり、Linux はもともとマルチユーザ用に設計されている
で、セキュリテイ機能もあらかじめ組みこまれています。ファイルやディレク
トリには所有者の許可属性を設定可能で、一般ユーザには見えないファイルを
作ることも可能です；(詳細については <ref id="Permissions" name="許可属
性">の節を参照してください)

<item> 自分の手でいろいろ試して、遊んでみてください。プロンプトが出て
いる状態で help と入力すれば、いくつか有用なメッセージが出力されます。
(以下の例では &dollar;は一般ユーザのプロンプトで、&num;はルートのプロ
ンプトです)。

<tscreen><verb>
$ help
</verb></tscreen>

(これで出力されるのは<tt>bash</tt>のヘルプメッセージです)あるいは、

<tscreen><verb>
$ man command
</verb></tscreen>

と入力します。man ページをインストールしていれば <tt>command</tt> に関
するマニュアル(``man'')ページが表示されます。あるいは

<tscreen><verb>
$ apropos command
$ whatis command
</verb></tscreen>

としてみるのもいいでしょう。終了するには 'q' を押します。

<item> Unix の力と柔軟性の源はリダイレクトとパイプ処理という単純な概念
にあります。リダイレクトとパイプ処理は DOS にもありますが、Unix ではそ
れらがずっと強力になっています。一つ一つは単純なコマンドをパイプと使っ
て連結することで、ずっと複雑な作業をやってのけることが可能になっていま
す。これらの機能を積極的に活用しましょう。

<item> 用例: <tt><...></tt> は特定しなければならない項目です。一方、
<tt>[...]</tt> は略すことのできる項目です。例えば:

<tscreen><verb>
$ tar -tf <file.tar> [> redir_file]
</verb></tscreen>

この場合、 <tt>file.tar</tt> は必須の項目です。しかし、 
<tt>redir_file</tt> へのリダイレクトはあっても無くても構いません。

<item> 以下では「詳細については man ページを参照のこと」という意味で ``RMP''
(please Read the Man Pages for further information)というマークを使い
ます。

</itemize>

<sect1> 短気な人のために

<p>

さっそくやってみたいのですか? では、以下のリストを御覧ください : 

<tscreen><verb>
DOS                 Linux                  メモ
----------------------------------------------------------------------
BACKUP              tar -Mcvf device dir/  全く異なる
CD dirname\         cd dirname/            文法はほぼ同じ
COPY file1 file2    cp file1 file2         上に同じ
DEL file            rm file                注意 : undelete はありません
DELTREE dirname     rm -R dirname/         上に同じ
DIR                 ls                     似ているが完全に同じではない
EDIT file           vi file                これは多分気にいらないでしょう。
                    emacs file             こっちの方がいいよね
                    jstar file             DOS の edit 風に使えます
FORMAT              fdformat,
                    mount, umount          文法は全く異なる
HELP command        man command            考え方は同じ
MD dirname          mkdir dirname/         文法はほぼ同じ
MOVE file1 file2    mv file1 file2         上に同じ
NUL                 /dev/null              上に同じ
PRINT file          lpr file               上に同じ
PRN                 /dev/lp0,
                    /dev/lp1               上に同じ
RD dirname          rmdir dirname/         ほぼ同じ書き方
REN file1 file2     mv file1 file2         複数ファイルを一度に処理できない
RESTORE             tar -Mxpvf device      文法は異なる
TYPE file           less file              こっちの方がずっといい
WIN                 startx                 正反対!
</verb></tscreen>

この表以上の説明が必要ならば以下のセクションを読んでください。

<sect> ファイルとプログラム

<p>

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

<itemize>

<item> DOS の世界では、ファイル名はいわゆる 8.3 形式になっています; 例
えば <tt>NOTENOUG.TXT</tt> など。Linux ではそのような制限はありません。
Linux を ext2 や umsdos を使ってインストールしていれば、(最大 255 文字
までの)ずっと長いファイル名を使うことも、一個以上のドットを使うことも
可能です。例えば、<tt>This_is.a.VERY_long.filename</tt> など。大文字と
小文字の両方を使っていることに注意してください。実際のところ、、

<item> ファイル名やコマンド名の大文字と小文字は区別されます。すなわち、
<tt>FILENAME.tar.gz</tt> と <tt>filename.tar.gz</tt> は違うファイルに
なります。コマンド名も <tt>ls</tt> であり、<tt>LS</tt> は間違いです。

<item> プログラムには .COM や .EXE という拡張子を付け、バッチファイル
には .BAT という拡張子を付けるなどの制限はありません。実行可能ファイル
は <tt>ls -F</tt> した時にアスタリスク '<tt>*</tt>' で示されます。例え
ば:

<tscreen><verb>
$ ls -F
letter_to_Joe  cindy.jpg  cjpg*  I_am_a_dir/  my_1st_script*  old~
</verb></tscreen>

<tt>cjpg*</tt> と <tt>my_1st_script</tt> は「プログラム」、すなわち実
行可能ファイルです。DOS では、バックアップファイルは .BAK という拡張子
を持ちますが、 Linux では、ファイル名の末尾にチルダ(<tt>&tilde;</tt>)
が付きます(emacs/mule を使う場合)。また、ドットで始まるファイル名は隠
しファイルになります。例えば、 <tt>.I.am.a.hidden.file</tt> というファ
イルは <tt>ls</tt> コマンドでは表示されません。

<item> DOS プログラムは <tt>/switch</tt> がプログラムのオプションスイッ
チになります。一方、Linux では <tt>-switch</tt> か <tt>--switch</tt> 
がオプションスイッチとなります。例えば <tt>dir /s</tt> は <tt>ls -
R</tt> になります。多くの DOS プログラム、例えば <tt>PKZIP</tt> や 
<tt>ARJ</tt> は Unix 風のオプションスイッチを使っていることに注意して
ください。

</itemize>

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

<sect1> シンボリック・リンク

<p>

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

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

<tscreen><verb>
$ ln -s <file_or_dir> <linkname>
</verb></tscreen>


例:
<tscreen><verb>
$ ln -s /usr/doc/g77/DOC g77manual.txt
</verb></tscreen>

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

<sect1>ファイルの許可属性と所有者 <label id="Permissions">
<p>

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

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

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


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

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

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

<tscreen><verb>
$ chmod <whoXperm> <file>
</verb></tscreen>

です。

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

<tscreen><verb>
$ chmod u+x file
</verb></tscreen>

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

<tscreen><verb>
$ chmod go-wx file
</verb></tscreen>

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

<tscreen><verb>
$ chmod ugo+rwx file
</verb></tscreen>

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

<tscreen><verb>
# chmod +s file
</verb></tscreen>

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

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

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

<sect1> DOS から Linux へのコマンドの翻訳 <label id="Files">

<p>

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

<tscreen><verb>
COPY:       cp
DEL:        rm
MOVE:       mv
REN:        mv
TYPE:       more, less, cat
</verb></tscreen>

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

ワイルドカード: <tt>* ?</tt> 

<tt>nul: /dev/null</tt>

<tt>prn, lpt1: /dev/lp0 か /dev/lp1; lpr</tt> 

いくつか例を示します。

<tscreen><verb>
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
</verb></tscreen>

注意点: 

<itemize>

<item> Linux では、ワイルドカードキャラクタである * は、DOS よりもずっ
と賢くなっています。* は隠しファイル以外の全てのファイルにマッチします。
．* は全ての隠しファイルにマッチします。*.* は、ファイル名の中に他の文字
にはさまれた '.' を持つファイルにのみマッチします。p*r は `peter' とも 
`piper' ともマッチします。*c* は `picked' にも `peck' にもマッチします。

<item> <tt>more</tt> を使う場合、続きを読むには SPACE を押し、終了する
には `q' か CTRL-C を押します。<tt>less</tt> は <tt>more</tt> よりもさ
らに賢くて、矢印キー(カーソルキー)を使うことも可能です。

<item> <tt>less</tt> で日本語のファイルを表示する際には環境変数 
<tt>LESSCHARSET</tt> を設定する必要があります。<tt>bash</tt> を使う場
合、
<code>
$ export LESSCHARSET=japanese-ujis
</code>

等を実行します。

<item> DOS とは異なり、<tt>UNDELETE</tt> はありません。ですから、何か
を削除する際には十分注意してください。

<item> DOS の <tt>&lt;、&gt;、&gt;&gt;</tt> に加えて、Linux では 
<tt>2&gt;</tt> でエラーメッセージ(stderr)を切り変えることが可能です。
加えて、<tt>2&gt;&amp;1</tt> とすると stderr を stdout に出力し、
<tt>1&gt;&amp;2</tt> で stdout を stderr にリダイレクトできます。

<item> Linux では <tt>[]</tt> というワイルドカードも使えます。
<tt>[abc]*</tt> は最初の文字が a か b か c で始まるワイルドカードの指
定です。<tt>*[I-N,123]</tt> は末尾が I, J, K, L, M, N, 1, 2, 3 で終わ
るファイルにマッチします。

<item> DOS 風の <tt>RENAME</tt> はありません。すなわち、
<tt>mv</tt> *.xxx *.yyy は使えません。

<item> ファイルの上書きを防ぐには <tt>cp -i</tt> か <tt>mv -i</tt> を
使って、確認モードで実行してください。

</itemize>

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

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

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

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

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

<tscreen><verb>
$ command1 ; command2 ; ... ; commandn
</verb></tscreen>

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

<itemize>

<item> セッション 1 から セッション 6 に切り替えるには、

<tscreen><verb>
$ ALT-F1 ... ALT-F6
</verb></tscreen>

とします。

<item> 今あるセッションを残したまま新しいセッションを起動するには、

<tscreen><verb>
$ su - <loginname>
</verb></tscreen>

とします。

例えば、

<tscreen><verb>
$ su - root
</verb></tscreen>

通常、ルートのみがディスクをマウントできるので、ディスクをマウントした
い場合(詳細は <ref id="Floppies" name="フロッピー"> の章を参照のこと)、
こうしてセッションを切り替えれば便利です。

<item> セッションを終えるには、

<tscreen><verb>
$ exit
</verb></tscreen>

とします。停止中のジョブが残っていれば(詳細は後述)警告が表示されます。

<item> フォアグラウンドでプロセスを起動するには、

<tscreen><verb>
$ progname [-switches] [parameters] [< input] [> output]
</verb></tscreen>

とします。

<item> バックグラウンドでプロセスを起動するにはコマンド行の最後に 
`<tt>&amp;</tt>' を付けます。

<tscreen><verb>
$ progname [-switches] [parameters] [< input] [> output] &
[1] 123
</verb></tscreen>

シェルはプロセスをジョブ番号(この例では <tt>[1]</tt> がジョブ番号です。
詳細は後述)とプロセス ID(この例では 123) で区別しています。

<item> いくつのプロセスが動いているかを見るには、

<tscreen><verb>
$ ps -a
</verb></tscreen>

とすると、現在動いているプロセスのリストが表示されます。

<item> プロセスを殺すには、

<tscreen><verb>
$ kill <PID>
</verb></tscreen>

プログラムの正しい終了方法が分らない場合など、プロセスを殺す必要が生じ
るかも知れません、、;-) プロセスの中には、以下のようにしないと死なない
ものもあります。

<tscreen><verb>
$ kill -15 <PID>
$ kill -9 <PID>
</verb></tscreen>

加えて、シェルはプロセスを一時停止したり、バックグラウンドに送ったり、
バックグラウンドからフォアグラウンドへ戻したりすることが可能です。この
場合、プロセスは特に「ジョブ」と呼ばれます。

<item> どれだけのジョブが動いているかを見るには

<tscreen><verb>
$ jobs
</verb></tscreen>

とします。この場合、各ジョブはプロセス ID ではなくジョブ番号で表示され
ます。

<item> フォアグラウンドで動いているプロセスを終了するには(常に動いてい
るとは限りませんが)、

<tscreen><verb>
$ CTRL-C
</verb></tscreen>

を入力します。

<item> フォアグラウンドで動いているプロセスを一時停止するには(同上)、

<tscreen><verb>
$ CTRL-Z
</verb></tscreen>

を入力します。

<item> 一時停止したプロセスをバックグラウンドに送るには(そのプロセスは
ジョブになります)

<tscreen><verb>
$ bg <job>
</verb></tscreen>

とします。

<item> ジョブをフォアグラウンドへ移すには

<tscreen><verb>
$ fg <job>
</verb></tscreen>

とします。

<item> ジョブを殺すには

<tscreen><verb>
$ kill <%job>
</verb></tscreen>

とします。

ここで、&lt;job&gt; は 1, 2, 3, ... などの番号です。これらのコマンドを
駆使することで、ディスクのフォーマットや複数ファイルの圧縮、プログラム
のコンパイル、アーカイブファイルの展開などを同時に行ないながら、さらに
プロンプトを出して、コマンド入力を可能にしておくことができます。これを 
DOS でやってごらんなさい! また、Windows でやってみて、どれくらい性能に
違いがあるかを見るのも面白いでしょう。

</itemize>

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

<p>

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

<tscreen><verb>
$ telnet remote.bigone.edu
</verb></tscreen>

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

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

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

<itemize>

<item> X11 を起動して、<tt>xterm</tt> か同等のターミナルエミュレータを
起動します(日本語を使う場合 <tt>kterm</tt> を使います。以下でも
<tt>xterm</tt>は<tt>kterm</tt>と読みかえてください)。そして、以
下のように入力します。

<tscreen><verb>
$ xhost +remote.bigone.edu
$ telnet remote.bigone.edu
</verb></tscreen>

<item> <tt>remote.bigone.edu</tt> にログインして、以下のように入力します。

<tscreen><verb>
remote:$ DISPLAY=local.linux.box:0.0
remote:$ progname &
</verb></tscreen>

(<tt>remote.bigone.edu</tt> に csh 系のシェルが乗っていれば 
<tt>DISPLAY=...</tt> の代りに <tt>setenv DISPLAY
local.linux.box:0.0</tt> とする必要があるかも知れません)

</itemize>

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

<sect> ディレクトリの使い方 <label id="Directories">

<p>
<sect1> ディレクトリとは: 簡単な紹介
<p>
今までに DOS と Linux でのファイルの違いについて見てきました。ディレク
トリについても、DOS ではルートディレクトリは &bsol; なのに対して、Linux で
は / です。同様に、DOS では複数のディレクトリは &bsol; で区切りますが、
Linux では / で区切ります。ファイルのパスの例を見てみましょう。

<tscreen><verb>
DOS:    C:\PAPERS\GEOLOGY\MID_EOC.TEX
Linux:  /home/guido/papers/geology/mid_eocene.tex
</verb></tscreen>

通常、<tt>..</tt> は親ディレクトリを示します。<tt>.</tt> は自分の今い
るディレクトリです。どこでも自由に <tt>cd</tt> したり <tt>rd</tt> した
り <tt>md</tt> したりできるわけではないことをお忘れなく。システムにロ
グインすると各ユーザはシステムの管理者があらかじめ用意している各自の
「ホーム」ディレクトリに入ります。例えば、私の PC では、私のホームディ
レクトリには <tt>/home/guido</tt> です。

<sect1> ディレクトリの許可属性

<p>
ディレクトリにも各種の許可属性があります。<ref id="Permissions" name="
許可属性">の章で見た「所有者」、「グループ」、「その他ユーザ」という区
分はディレクトリにも同様にあてはまります。ディレクトリの場合、
<tt>rx</tt> はそのディレクトリに <tt>cd</tt> できることを意味し、
<tt>w</tt> はそのディレクトリにあるファイル、あるいはディレクトリ自身
を削除できることを意味します(実際にファイルを削除できるかどうかは、そ
のファイル自身の許可属性によって決まることは言うまでもありません)。

例えば、他のユーザが <tt>/home/guido/text</tt> ディレクトリを覗けない
ようにするには

<tscreen><verb>
$ chmod o-rwx /home/guido/text
</verb></tscreen>

とします。

<sect1> ディレクトリ処理コマンドの DOS と Linux の対応 <label id="dir">

<p>

<tscreen><verb>
DOS         Linux
-------------------------
DIR     :   ls, find, du
CD      :   cd, pwd
MD      :   mkdir
RD      :   rmdir
DELTREE :   rm -R
MOVE    :   mv
</verb></tscreen>

いくつか例をしめします。

<tscreen><verb>

DOS                                     Linux
---------------------------------------------------------------------
C:\GUIDO>dir                             $ ls
C:\GUIDO>dir file.txt                    $ ls file.txt
C:\GUIDO>dir *.h *.c                     $ ls *.h *.c
C:\GUIDO>dir/p                           $ ls | more
C:\GUIDO>dir/a                           $ ls -l
C:\GUIDO>dir *.tmp /s                    $ find / -name "*.tmp"
C:\GUIDO>cd                              $ pwd
    ありません。下の「注意」を参照       $ cd
    同上                                 $ cd ~
    同上                                 $ cd ~/temp
C:\GUIDO>cd \other                       $ cd /other
C:\GUIDO>cd ..\temp\trash                $ cd ../temp/trash
C:\GUIDO>md newprogs                     $ mkdir newprogs
C:\GUIDO>move prog ..                    $ mv prog ..
C:\GUIDO>md \progs\turbo                 $ mkdir /progs/turbo
C:\GUIDO>deltree temp\trash              $ rm -R temp/trash
C:\GUIDO>rd newprogs                     $ rmdir newprogs
C:\GUIDO>rd \progs\turbo                 $ rmdir /progs/turbo
</verb></tscreen>

注意:

<enum>
<item> <tt>rmdir</tt> する際には、そのディレクトリは空でなければいけま
せん。ディレクトリをその中身ごと削除する場合、 <tt>rm -R</tt> を使いま
す(自分の責任で実行してください)。

<item> チルダ(<tt>&tilde;</tt>)キャラクタはホームディレクトリを示しま
す。引数を指定しない <tt>cd</tt> や <tt>cd ~</tt> すると、どこにいよう
と、自分のホームディレクトリに移動します。<tt>cd ~/tmp</tt> は 
<tt>/home/your_home/tmp</tt> へ移動します。

<item> <tt>cd -</tt> は直前までいたディレクトリに戻ります。

</enum>

<sect> フロッピーやハードディスクなどの扱い <label id="Floppies">
<p>

<sect1> デバイス管理
<p>
気づくことはまずありませんが、DOS の <tt>FORMAT A:</tt> コマンドは見た
目よりもずっとたくさんの仕事をしています。実際、<tt>FORMAT</tt> コマン
ドは、1) 物理的にディスクをフォーマットし、2) A:\ ディレクトリを作成(= 
ファイルシステムの作成)し、3) ディスクを使えるように準備(= ディスクの
マウント)する、といった一連の作業をしています。

Linux では、これら 3 つの仕事はそれぞれ別々にやることになります。フロッ
ピーディスクを MS-DOS フォーマットで使うことは可能ですが、MS-DOS フォー
マットの場合、長いファイル名が使えないので、別の種類のフォーマットを使
う方が便利です。以下にディスクを使う方法を示します(以下のセッションは
ルートで実行しなければなりません)。

<itemize>

<item> 標準の 1.44M フロッピーディスクをフォーマットする(A:)

<tscreen><verb>
# fdformat /dev/fd0H1440
</verb></tscreen>

<item> ファイルシステムを作成する。

<tscreen><verb>
# mkfs -t ext2 -c /dev/fd0H1440
</verb></tscreen>
あるいは
<tscreen><verb>
# mformat a:
</verb></tscreen>
で MS-DOS ファイルシステムを作ります。ディスクを使う前にマウントする必
要があります。

<item> ディスクをマウントするには、

<tscreen><verb>
# mount -t ext2 /dev/fd0 /mnt
</verb></tscreen>
か

<tscreen><verb>
# mount -t msdos /dev/fd0 /mnt
</verb></tscreen>

とします。

これでフロッピーとファイルをやりとりすることができます。作業を終えてディ
スクを抜く前には、アンマウントしなければならないことをお忘れなく。

<item> ディスクをアンマウントするには、

<tscreen><verb>
# umount /mnt
</verb></tscreen>

とします。

</itemize>

これでディスクを抜くことが可能です。<tt>fdformat</tt> と <tt>mkfs</tt> 
は今まで使ったことのない未フォーマットのディスクにのみ必要となる作業で
す。 B: ドライブを使う場合、上記の例の <tt>fd0H1440</tt> と 
<tt>fd0</tt> の代りに <tt>fd1H1440</tt> と <tt>fd1</tt> を使ってくださ
い。

こうしておけば、 DOS では A: や B: として指定するところを 
<tt>/mnt</tt> というディレクトリ名を使って指定することになります。例を
示します。

<tscreen><verb>

DOS                                     Linux
---------------------------------------------------------------------
C:\GUIDO>dir a:                          $ ls /mnt
C:\GUIDO>copy a:*.*                      $ cp /mnt/* /docs/temp
C:\GUIDO>copy *.zip a:                   $ cp *.zip /mnt/zip
C:\GUIDO>a:                              $ cd /mnt
A:>_                                     /mnt/$ _
</verb></tscreen>

言うまでもなく、フロッピーディスクでできることは他のデバイスでも可能で
す。例えば別のハードディスクや CD-ROM ドライブをマウントしたくなった場
合、CD-ROM をマウントするにはルートになって以下のように実行します。

<tscreen><verb>
# mount -t iso9660 /dev/cdrom /mnt
</verb></tscreen>

これが「公式」の方法ですが、フロッピーや CD-ROM をマウントするたびにルー
トになるのは面倒なので、一般ユーザがマウントできるような抜け道も用意さ
れています。

<itemize>

<item> ルートになって <tt>/mnt/a</tt> と <tt>/mnt/a:</tt>、
<tt>/mnt/cdrom</tt> ディレクトリを作る。

<item> <tt>/etc/fstab</tt> に以下のような行を加える。

<tscreen><verb>
/dev/cdrom      /mnt/cdrom  iso9660 ro,user,noauto          0       0
/dev/fd0        /mnt/a:     msdos   user,noauto             0       0
/dev/fd0        /mnt/a      ext2    user,noauto             0       0
</verb></tscreen>

</itemize>

これで以下のように一般ユーザでも DOS フロッピーや ext2 フロッピー、
CD-ROM をマウントできるようになります。

<tscreen><verb>
$ mount /mnt/a:
$ mount /mnt/a
$ mount /mnt/cdrom
</verb></tscreen>

<tt>/mnt/a</tt> や <tt>/mnt/a:</tt>、<tt>/mnt/cdrom</tt> は全てのユー
ザからアクセスできます。ルートにならずに <tt>/mnt/a</tt> に書きこむた
めには、一旦ルートになって以下のように準備しておきます。

<tscreen><verb>
# mount /mnt/a
# chmod 777 /mnt/a
# umount /mnt/a

</verb></tscreen>

一般ユーザにディスクをマウント可能にするのはセキュリティホールになりか
ねないことをお忘れなく。

<sect1> バックアップ <label id="Backing Up">
<p>

これでフロッピーの扱い方が分ったと思います。次にバックアップの取り方を
説明します。バックアップ用のソフトもいくつかありますが、最低限、以下の
ようにすれば複数のフロッピーにバックアップを取ることが可能です(ルート
になって作業することが必要です)

<tscreen><verb>
# tar -M -cvf /dev/fd0H1440 /dir_to_backup
</verb></tscreen>

あらかじめフロッピーをドライブに入れてから実行してください。また、フォー
マット済のフロッピーを複数枚用意しておくこともお忘れなく。

バックアップしたデータを取り出すには、最初のフロッピーをドライブに入れ
て、

<tscreen><verb>
# tar -M -xpvf /dev/fd0H1440
</verb></tscreen>

とします。

<sect> システムの調整

<p>

<sect1> 各種初期設定用ファイル <label id="System Initialization">

<p>

DOS では <tt>AUTOEXEC.BAT</tt> と <tt>CONFIG.SYS</tt> の 2 つのファイ
ルが特に重要でした。これらのファイルは起動時にシステムを初期設定するた
め利用され、PATH や FILES といった環境変数を設定したり、特定のプログラ
ムやバッチファイルを実行したりします。Linux にはもっと多くの初期設定用
ファイルがあります。中には、初心者の間はいじらない方がいいファイルもあ
ります。最も重要な初期設定用ファイルをいくつか紹介します。

<tscreen><verb>

FILES                           NOTES
----------------------------------------------------------
/etc/inittab                    現時点では触らないこと
/etc/rc.d/*                     上に同じ。

</verb></tscreen>

PATH やその他の環境変数を変えたり、ログイン時のメッセージやログインし
た時に自動的に実行されるプログラムを変えたいだけなら、以下のファイルを
調べてみましょう。

<tscreen><verb>
FILES                           NOTES
--------------------------------------------------------------
/etc/issue                      login 前に表示されるメッセージ
/etc/motd                       login した時に表示されるメッセージ
/etc/profile                    PATH などの環境変数の設定など
/etc/bashrc                     エイリアスやファンクションの設定(後述)

/home/your_home/.bashrc         専用のエイリアスやファンクションの設定
/home/your_home/.bash_profile   環境変数の設定と自分用のプログラムの起動
/home/your_home/.profile        同上  

</verb></tscreen>

上記のリストで、後半に紹介したファイルが自分のホームディレクトリに存在
していれば(これらは隠しファイルになっていることに注意)、ログイン後に読
みこまれて指定したコマンドが実行されます。

例 --- 以下に示す <tt>.profile</tt> を見てください

<code>
# これはコメントです
echo Environment:
printenv | less   # equivalent of command SET under DOS
alias d='ls -l'   # easy to understand what an alias is
alias up='cd ..'
echo "I remind you that the path is "$PATH
echo "Today is `date`"  # use the output of command 'date'
echo "Have a good day, "$LOGNAME
# これはシェル関数の設定です
ctgz() # List the contents of a .tar.gz archive.
{
  for file in $*
  do
    gzip -dc ${file} | tar tf -
  done
}         
# end of .profile
</code>


PATH と LOGNAME は想像どおり環境変数になっています。これら以外にもさま
ざまな環境変数があります。例えば <tt>less</tt> のマニュアルを RMP して
みてください。

<sect1> 各種プログラム用初期設定ファイル
<p>

Linux では、ほぼ全てのことが好きなように設定できます。ほとんどのプログ
ラムに自由に設定できる一つ以上の設定用ファイルが用意されています。設定
用ファイルはしばしば <tt>.prognamerc</tt> という名前であなたのホームディ
レクトリに用意されています。まっさきに修正したくなる設定用ファイルは以
下のようなものでしょう。

<tt>．inputrc</tt> <tt>bash</tt> のキーバインディングの設定に使います

<tt>．xinitrc</tt> <tt>startx</tt> が X ウィンドウの初期設定に使います

<tt>．fvwmrc</tt> <tt>fvwm</tt> ウィンドウマネージャ用の設定ファイルで
す。サンプルは <tt>/usr/lib/X11/fvwm/system.fvwmrc</tt> にあります。

<tt>．Xdefault</tt> X 用の端末エミュレータ <tt>rxvt</tt> などが使います。

これら全てや近い将来に使うコマンドについては RMP してください。

<sect> 簡単なプログラミング

<p>

<sect1> シェルスクリプト: 強化された .BAT ファイル

<p>
DOS のバッチファイル(.BAT ファイル)は長いコマンドラインのショートカッ
トを作るのによく用いられます(私はそういう風によく使いました)。Linux で
各種コマンドへのショートカットを作るには、適切な alias 行を 
<tt>profile</tt> か <tt>.profile</tt> に記載します(上記の例を見てくだ
さい)。でも、バッチファイルをより複雑な目的に使っていたならシェルのス
クリプト機能を使うのが便利でしょう。シェルのスクリプト機能は QBasic と
同等の機能を持っています。シェルスクリプトは変数や while, for, case,
if... then... else といった制御構造など、多くの機能を持っています。シェ
ルスクリプトは多くの場合「本物」のプログラム言語の代りに使えます。

シェルスクリプト --- DOS の .BAT ファイルの同等物 --- を書くには、必要
な指示を並べた通常のアスキーファイルを作り、セーブして <tt>chmod +x
&lt;scriptfile&gt;</tt> として実行許可を与えます。実行するにはそのファ
イル名を入力します。

一言注意しておきますと、システムに付属のエディタは通常 <tt>vi</tt> で
すが、私の経験から言うと、ほとんどの新しいユーザには <tt>vi</tt> は使い
づらいようです。私自身 <tt>vi</tt> は好きではないし使ってもいないので、
ここでは使い方の説明はしませんが、必要ならば Matt Welsh の ``Linux
installation...'' を参照してください(X が動くなら <tt>joe</tt> や 
<tt>emacs</tt> のような別のエディタを使う方がいいと思います)。ここでは
vi については以下のコマンドだけを説明しておきます。

<itemize>
<item> テキストを入力するには、まず 'i' を入力してから実際のテキストを
入力する。

<item> セーブせずに <tt>vi</tt> を終了するには &lt;ESC&gt; を押してか
ら :q!  を入力。

<item> セーブして終了するには &lt;ESC&gt; を押して :wq と入力。

</itemize>

<tt>bash</tt> のスクリプトの書き方についてはそれだけで本が一冊必要にな
るので、ここではこれ以上は触れずに、基本的な使い方が分かるサンプルスク
リプトを示すだけにしておきます。

<code>

#!/bin/sh
# シェルスクリプトのサンプル
# これはコメント行
# 1 行目は変更しないこと。#!/bin/sh は1行目にないといけません
echo "This system is: `uname -a`" # use the output of the command
echo "My name is $0" # built-in variables
echo "You gave me the following $# parameters: "$*
echo "First parameter is: "$1
echo -n "What's your name? " ; read your_name
echo look the difference: "hi $your_name" # quoting with "
echo look the difference: 'hi $your_name' # quoting with '
DIRS=0 ; FILES=0
for file in `ls .` ; do
  if [ -d ${file} ] ; then # if file is a directory
    DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
  elif [ -f ${file} ] ; then
    FILES=`expr $FILES + 1`
  fi
  case ${file} in
    *.gif|*jpg) echo "${file}: graphic file" ;;
    *.txt|*.tex) echo "${file}: text file" ;;
    *.c|*.f|*.for) echo "${file}: source file" ;;
    *) echo "${file}: generic file" ;;
  esac
done
echo "there are ${DIRS} directories and ${FILES} files"
ls | grep "ZxY--!!!WKW"
if [ $? != 0 ] ; then # exit code of last command
  echo "ZxY--!!!WKW not found"
fi
echo "enough... type 'man bash' if you want more info."

</code>

<sect1> C でのプログラム

<p>

Unix では、好き嫌いにかかわらず、システム言語は C です。その他の言
語(FORTRAN, Pascal, Lisp, Basic, Perl, awk...)も利用可能です。

すでに C については御存知のこととして、ここでは Turbo C++ やその親戚を
使ったことがある人向けにいくつかのガイドラインを紹介します。Linux での 
C コンパイラは <tt>gcc</tt> で、DOS の C コンパイラに付いてくるような
統合環境やオンライン・ヘルプ、統合デバッガの類いは一切ありません。
<tt>gcc</tt> は単なるコマンドライン・コンパイラですが、きわめて強力か
つ効率的です。標準的な <tt>hello.c</tt> プログラムをコンパイルするには

<tscreen><verb>
$ gcc hello.c
</verb></tscreen>

とします。この結果、<tt>a.out</tt> と呼ばれる実行形式が作成されます。
実行形式に別の名前を付けたいなら、

<tscreen><verb>
$ gcc -o hola hello.c
</verb></tscreen>

のようにします。

何らかのライブラリをリンクしたければ -l&lt;libname&gt; スイッチを付け
ます。例えば、数学ライブラリをリンクするなら

<tscreen><verb>
$ gcc -o mathprog mathprog.c -lm
</verb></tscreen>

とします。

(<tt>-l&lt;libname&gt;</tt> スイッチを使うと <tt>gcc</tt> は 
<tt>/usr/lib/lib&lt;libname&gt;.a</tt> という名前のライブラリをリンク
します。ですから、<tt>-lm</tt> を指定すると <tt>/usr/lib/libm.a</tt> 
をリンクします)

簡単なプログラムならばこれで十分ですが、コンパイルするプログラムが複数
のソースファイルからできている場合、<tt>make</tt> というユーティリティ
を使うのが一般的です。何らかのパーサを書いているとしましょう。このソー
スコードは <tt>parser.c</tt> というファイルになっており、
<tt>parser.h</tt> と <tt>xy.h</tt> の 2 つのファイルをインクルードしま
す。さて、 <tt>calc.c</tt> というプログラムの中で <tt>parser.c</tt> の
中にあるルーチンを使いたくなりました。<tt>calc.c</tt> は 
<tt>parser.h</tt> をインクルードします。さて、<tt>calc.c</tt> をコンパ
イルするにはどうすればいいでしょう?

この場合、<tt>makefile</tt> と呼ばれるファイルを書くのがいいでしょう。
<tt>makefile</tt> はコンパイラにソースファイルとオブジェクトファイルの
依存関係を教えます。今回の例では以下のようになります。

<code>
# calc.c をコンパイルするための makefile
# 適切な場所で <TAB> キーを入力すること!

calc: calc.o parser.o
<TAB>gcc -o calc calc.o parser.o -lm
# calc には calc.o と parser.o が必要

calc.o: calc.c parser.h
<TAB>gcc -c calc.c
# calc.o には 2 つのソースファイルが必要

parser.o:  parser.c parser.h xy.h
<TAB>gcc -c parser.c
# parser.o には 3 つのソースファイルが必要

# これでお終い
</code>

このファイルを <tt>makefile</tt> という名前で保存して

<tscreen><verb>
$ make
</verb></tscreen>

とすると、プログラムがコンパイルされます。あるいは <tt>calc.mak</tt> 
という名前で保存して、

<tscreen><verb>
$ make -f calc.mak
</verb></tscreen>

とすることも可能です。詳細については RMP してください。

man ページの 3 章には C の関数についての説明があります。

<tscreen><verb>
$ man 3 printf
</verb></tscreen>

Linux にはさまざまな種類のライブラリが公開されています。まず最初に紹介
すべきはテキストモードで各種の効果を出すための <tt>ncurses</tt> ライブ
ラリとグラフィック用の <tt>svgalib</tt> でしょう。X プログラムに挑戦す
る勇気があれば、<tt>XForms</tt> ライブラリ(<tt> <htmlurl
url="ftp://bloch.phys.uwm.edu/pub/xforms"
name="bloch.phys.uwm.edu:/pub/xforms"></tt>) と/あるいは <tt>MGUI</tt> 
ライブラリ(<tt> <htmlurl
url="http://www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm"
name="www.volftp.vol.it:/IT/IT/ITALIANI/MORELLO/index.htm"></tt>) を入
手してみましょう。この 2 つのライブラリは X でのプログラムをずっと簡単
にしてくれます。ボーランド風の統合環境が無いと困る人は <tt><htmlurl
url="ftp://sunsite.unc.edu:/pub/Linux/apps/editors/"
name="sunsite.unc.edu:/pub/Linux/apps/editors/"></tt> から入手できる 
<tt>xwpe</tt> がお勧めです。ただし、多少好き嫌いはありそうですが。

<sect> 残りの 1 &percnt;

<p>
<sect1> 仮想メモリの作り方

<p>
理論的には、Linux は 4M の RAM で動くはずですが、メモリが多ければ多い
ほど、ずっといろいろなことができるようになります。X ウィンドウを動かす
には最低でも 8M のメモリが必要です。X ウィンドウを快適に使うには 16M 
のメモリが必要でしょう。X ウィンドウ上で日本語を快適に使うには、32M の
メモリが欲しくなります。もう 8M 分の仮想メモリ(スワップファイル)を作る
には、ルートになって以下のようにしてください。

<tscreen><verb>
# dd if=/dev/zero of=/swapfile bs=1024 count=8192
# mkswap /swapfile 8192
# sync
# swapon /swapfile
</verb></tscreen>

最後の行を <tt>/etc/rc.d/rc.local</tt> に加えて次からは起動時にスワッ
プファイルを使うようにしましょう。あるいは、<tt>/etc/fstab</tt> に以下
のように加える方法もあります。

<tscreen><verb>
/swapfile   swap   swap   defaults
</verb></tscreen>

<sect1> tar &amp; と gzip の使い方

<p>
Unix の世界で広く使われているアーカイブと圧縮のためのプログラムは
<tt>tar</tt>と <tt>gzip</tt> です。<tt>tar</tt> はアーカイブを作るため
に使われます。<tt>tar</tt> は <tt>PKZIP</tt> に似ていますが、圧縮機能
は持たず、アーカイブファイルを作るだけです。新しいアーカイブファイルを
作るには、

<tscreen><verb>
$ tar -cvf <archive_name.tar> <file> [file...]
</verb></tscreen>

とします。アーカイブファイルからファイルを取り出すには

<tscreen><verb>
$ tar -xpvf <archive_name.tar> [file...]
</verb></tscreen>

とします。アーカイブファイルの中身を表示するには、

<tscreen><verb>
$ tar -tf <archive_name.tar> | less
</verb></tscreen>

とします。

ファイルを圧縮するには <tt>compress</tt> か <tt>gzip</tt> を使います。
<tt>compress</tt> は時代遅れのプログラムでこれからはあまり使われなくな
るでしょう。

ファイルを圧縮するには以下のようにします。

<tscreen><verb>
$ compress <file>
$ gzip <file>
</verb></tscreen>

これで拡張子が .Z(<tt>compress</tt>の場合) か、.gz(<tt>gzip</tt>の場合)
の圧縮したファイルが作成されます。これらのプログラムは一度に一つのファ
イルしか圧縮できません。圧縮したファイルを展開するには以下のようにしま
す。

<tscreen><verb>
$ compress -d <file.Z>
$ gzip -d <file.gz>
</verb></tscreen>

詳細については RMP すること。

<tt>unarj</tt> や <tt>zip</tt>、<tt>unzip</tt> (PK??ZIP 互換)といった
プログラムもあります。<tt>.tar.gz</tt> か <tt>.tgz</tt> という拡張
子を持つファイル(<tt>tar</tt> でアーカイブしてから <tt>gzip</tt> で圧
縮したファイル)は DOS の .ZIP ファイルのように Unix の世界で使われて
いるアーカイブファイルを圧縮した形式です。<tt>.tar.gz</tt> アーカイ
ブの中身を表示する方法を示します。

<tscreen><verb>
$ gzip -dc <file.tar.gz> | tar tf - | less
</verb></tscreen>

最近のGNU tarでは tar にファイルの圧縮/展開機能が組みこまれており、
<tt>-z</tt> オプションを追加することで圧縮/展開処理が可能です。

<tscreen><verb>
$ tar -cvzf <archivename.tar.gz> file [file...]  (圧縮してアーカイブ)
$ tar -xvzf <archivename.tar.gz> file [file...]  (圧縮アーカイブの展開)
$ tar -tzvf <archivename.tar.gz> | less          (圧縮アーカイブのリスト)
</verb></tscreen>

<sect1> アプリケーションのインストール<label id="Install">

<p>
まず最初に: 各種ソフトウェアをインストールするのはルートの仕事です。
<tt>．tar.gz</tt> や <tt>.tgz</tt> の形式で配布されているアプリケー
ションは通常そのままインストールできるようになっているので、ルートになっ
て / ディレクトリで以下のようにすればインストールできます。

<tscreen><verb>
# gzip -dc <file.tar.gz> | tar xvf -
</verb></tscreen>

展開されたファイルは正しいディレクトリにインストールされ、必要ならばディ
レクトリが自動的に作成されます。Slackware を使っている場合、
<tt>pkgtool</tt> を使うことも可能です。もう一つ、Red Hat が配布してく
れている <tt>rpm</tt> という形式もあります。

/ ディレクトリからはインストールすべきでないプログラムもあります。例え
ば、アーカイブファイルに <tt>pkgname/</tt> というディレクトリがあって、
多くのファイル、と/あるいは、サブディレクトリが <tt>pkgname/</tt> 以下に
あるような場合です。これらのプログラムは <tt>/usr/local</tt> 以下にイ
ンストールするのがいいでしょう。加えて、C や C++ のソースファイルの形
式で流通しているソフトウェアもあります。これらはコンパイルして実行形式
を作る必要があります。コンパイルといっても、ほとんどの場合は 
<tt>make</tt> と入力するだけです。もちろん、これらのソフトウェアをイン
ストールするには <tt>gcc</tt> コンパイラが必要です。

<sect1> 必須のテクニック

<p>
<bf>コマンドの補完</bf>: 途中まで入力したコマンドを完成するには 
&lt;TAB&gt; キーを押します。例えば、<tt>gcc this_is_a_long_name.c</tt> 
と入力すべき場合、<tt>gcc thi&lt;TAB&gt;</tt> とすれば、残りは自動的に
補完してくれる場合があります(同じ文字で始まるファイルが複数ある場合は、
一つに確定できるまでの部分を入力する必要があります)。

<bf>逆スクロール</bf>: SHIFT + PAGE UP(たいてい灰色のキー)を押せ
ば、数ページ分画面が逆スクロールします。何ページ分戻れるかは使っている
ビデオメモリに依存します。

<bf>画面のリセット</bf>: <tt>more</tt> や <tt>cat</tt> でバイナリファ
イルを表示してしまうと、画面がおかしくなるかも知れません。その場合、以
下のコマンドを(入力が表示されないかも知れませんが)入力して画面をリセッ
トします。

<tt>echo CTRL-V ESC c RETURN</tt>

<bf>行の切り貼り</bf>: コンソールの場合は次を見てください。X の場合、
<tt>xterm</tt> の中で、必要な部分の先頭でマウスの左ボタンをクリックし
て、そのまま必要な部分をマウスで選択します。必要な部分を選択すれば、ボ
タンを離して、テキストを貼り付けたい部分にマウスを移動します。テキスト
を貼り付けたい場所でマウスの真中のボタン(2 ボタン式のマウスならば二つ
のボタンを同時に)押すと、その部分に選択したテキストが貼り付け(ペースト)
られます。<tt>xclipboard</tt> というプログラムもあります(残念なことに
テキストにしか対応していません)。<tt>xclipboard</tt> の反応はとても遅
いので、反応がなかなか返ってこなくても慌てないでください。

<bf>マウスの使い方</bf>: X を使わないコンソール画面でマウスを使いたい
場合、 <tt>gpm</tt> というマウスドライバをインストールします。必要なと
ころの先頭でマウスの左ボタンをクリックしながら必要な範囲をマウスで選択
し、右ボタンをクリックすれば選んだ部分が貼りつけられます。これは異なる
仮想コンソール間でも使えます。

<bf>カーネルからのメッセージ</bf> : カーネルが出力しているメッセージを
見るには、ルートになって<tt>/var/adm/messages</tt> か 
<tt>/var/log/messages</tt> を見てください。ここには起動時のメッセージ
も保存されています。

<sect1> 役に立つプログラムとコマンド

<p>
<!-- 
This list reflects my personal preferences and needs, of course.
First of all, where to find them. Since you all know how to surf 
the Net and how to use <tt/archie/ and <tt/ftp/, I'll just give you three 
of the most important addresses for Linux: <tt>
<htmlurl url="ftp://sunsite.unc.edu" 
name="sunsite.unc.edu"></tt>, <tt><htmlurl url="ftp://tsx-11.mit.edu" 
name="tsx-11.mit.edu"></tt>, and <tt><htmlurl url="ftp://nic.funet.fi" 
name="nic.funet.fi"></tt>. Please use your nearest mirror.
-->

以下に示すリストは私の個人的な好みと必要性に基づいたものです。みなさん
は既にネットサーフの仕方や <tt>archie</tt> や <tt>ftp</tt> の使い方を
知っているでしょうから、これらのプログラムを入手する先として以下に 
Linux にとってもっとも重要な 3 つのアドレスを示します。それらは、
<tt><htmlurl url="ftp://sunsite.unc.edu" name="sunsite.unc.edu"></tt>,
<tt><htmlurl url="ftp://tsx-11.mit.edu" name="tsx-11.mit.edu"></tt>,
 <tt><htmlurl url="ftp://nic.funet.fi" name="nic.funet.fi"></tt>
です。

これらのサイトには多数のミラーサイトがあるのでお近くのミラーサイトをお
使いください。例えば、国内では <tt><htmlurl
url="ftp://ftp.lab.kdd.co.jp" name="KDD Lab"></tt> や <htmlurl
url="ftp://ftp.hitachi.co.jp" name="ftp.hitachi.co.jp"> <htmlurl
url="ftp://ftp.kuis.kyoto-u.ac.jp" name="ftp.kuis.kyoto-u.ac.jp">など
がミラーサイトになっています。

<itemize>
<item> <tt>at</tt> を使えば指定した日時にプログラムを実行することがで
きます。

<item> <tt>awk</tt> は、簡単ですが強力なデータファイル(だけではありま
せんが)処理言語です。例えば <tt>data.dat</tt> というデータファイルがあ
る場合、

<tscreen><verb>
$ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat
</verb></tscreen>

とすれば、<tt>data.dat</tt> の各行のうち、2 つ目のデータに ``abc'' と
いう文字列がある各行の 1 つ目と 4 つ目のデータを表示します。

<item> <tt>delete-undelete</tt> は名前の示す通りです。

<item> <tt>df</tt> はマウントしているディスクの容量を表示します。

<item> <tt>dosemu</tt> は(全てではありませんが)さまざまな DOS のプログラムを
実行可能にします。少々の工夫が必要ですが Windows 3.x も動きます。

<item> <tt>file &lt;filename&gt;</tt> は <tt>filename</tt> が何か(アス
キーテキストファイル、実行形式、アーカイブ、等)を表示します。

<item> <tt>find</tt> (<ref id="dir" name="dir"> の章も見てください)は
もっとも強力で有用なコマンドの一つでしょう。このコマンドは、さまざまな
特徴を持つファイルを見つけだして、指定した処理を行ないます。
<tt>find</tt> の一般的な使い方は以下の通りです。

<tscreen><verb>
$ find <directory> <expression>
</verb></tscreen>

ここで &lt;expression&gt; で探す項目や処理方法を指定します。例えば、

<tscreen><verb>
$ find . -type l -exec ls -l {} \;
</verb></tscreen>

とすれば、カレントディレクトリ以下にあるシンボリックリンクになっている
ファイルを見つけて、それぞれのリンク先を表示します。

<tscreen><verb>
$ find / -name "*.old" -ok rm {} \;
</verb></tscreen>

この例では ``.old'' というファイル名を持つファイルを見つけて削除します
が、削除する際に確認を求めます。

<tscreen><verb>
$ find . -perm +111
</verb></tscreen>

この例では実行許可が設定されているファイルを見つけます。

<tscreen><verb>
$ find . -user root
</verb></tscreen>

この例ではルートユーザが所有者のファイルを表示します。この他にもさまざ
まな指定方法がありますので、詳細については RMP してください。

<item> <tt>gnuplot</tt> はさまざまなデータをグラフ化する優れたプログラムです。

<item> <tt>grep</tt> はファイルの中の指定したパターンに一致する行を表示します。
例えば、

<tscreen><verb>
$ grep -l "geology" *.tex
</verb></tscreen>

とすれば、*.tex のファイルのうち、``geology'' という語を含むファイルを
表示します。<tt>zgrep</tt> は gzip 形式で圧縮したファイルも扱えます。
詳細については RMP してください。

<item> <tt>gzexe</tt> は実行形式を圧縮し、圧縮したまま実行可能にします。

<item> <tt>joe</tt> は優れたエディタです。<tt>jstar</tt> というコマンド名でこ
のプログラムを起動すると WordStar やその後継者である DOS やボーランド
の Turbo シリーズのエディタと同様のキーバインディングが実現できます(残
念ながらこれらのエディタは日本語を表示できません)。

<item> <tt>less</tt> はテキストを見る最良のツールでしょう。正しく設定
すれば、gzip されたファイルや tar ファイル、zip 形式のファイルなども見
ることが可能です。<tt>less</tt> で日本語ファイルを表示する場合、環境変
数 <tt>LESSCHARSET</tt> を忘れず指定してください。

<item> <tt>lpr</tt> &lt;file&gt; はファイルをバックグラウンドでプリン
トします。プリントの待ち行列の状態をチェックするには <tt>lpq</tt> を使
います。待ち行列から削除するには <tt>lprm</tt> を使います。

<item> <tt>mc</tt> はすぐれたファイルマネージャです。同様のファイルマ
ネージャとして、日本語のファイル名を持つファイルも操作できる 
<tt>FD</tt> があります。

<item> <tt>pine</tt> はすぐれた e-mail プログラムです。<tt>mnews</tt> 
はネットニュースと e-mail の双方を読み書きできます。

<item> <tt>script &lt;script_file&gt; </tt> は画面出力を 
<tt>script_file</tt> にコピーします。終了するのは <tt>exit</tt> です。
デバッグに便利な機能でしょう。

<item> <tt>sudo</tt> は一般ユーザにルート権限の仕事を可能にします(例え
ばディスクのフォーマットやマウント。詳細は RMP のこと)

<item> <tt>uname -a</tt> はシステムについての情報を表示します。

<item> <tt>zcat</tt> と <tt>zless</tt> は gzip で圧縮されているテキストファイ
ルを圧縮したまま見ることができます。こういう使い方が可能です。

<tscreen><verb>
$ zless textfile.gz
$ zcat textfile.gz | lpr
</verb></tscreen>

<item> 以下に示すコマンドも便利です。<tt>bc, cal, chsh, cmp, cut, fmt,
head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail,
tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew</tt> 各コマ
ンドの内容については RMP してください。

</itemize>

<sect1> 一般的な拡張子の付け方と関係するプログラム

<p>

以下にフォント類のような複雑なものを除いた拡張子の付け方の一般的なルー
ルを示します。

<itemize>

<item> <tt>．1 ... .8</tt> は man ページです。見るためには <tt>man</tt> します。

<item> <tt>．arj</tt> は <tt>arj</tt> で作ったアーカイブです。展開するには 
<tt>unarj</tt> を使います。

<item> <tt>．dvi</tt> は TeX (後述)の出力形式です。画面に表示するには 
<tt>xdvi</tt> を使います。ポストスクリプト形式の .ps に変換するには 
<tt>dvips</tt> を使います。日本語の入った dvi ファイルの場合、jdvi2kps 
か、日本語化された dvi2ps を使います。

<item> <tt>．gif</tt> はグラフィックデータです。見るには 
<tt>seejpeg</tt> か <tt>xpaint</tt> を使います。シェアウェアですが、
<tt>xv</tt> はさまざまな形式のグラフィックデータを表示することが可能で
す。

<item> <tt>．gz</tt> は <tt>gzip</tt> で作った圧縮ファイルです。

<item> <tt>．info</tt> は INFO 形式(man ページの代りになるもの)のファイルです。
使うには <tt>info</tt> を入手してください。

<item> <tt>．jpg、 .jpeg</tt> はグラフィックファイルです。
表示するには<tt>seejpeg</tt> を使います。<tt>xv</tt> でも表示できます。

<item> <tt>．lsm</tt> は Linux Software Map のエントリです。通常のテキストファ
イルで、そのソフトウェアについて説明しています。

<item> <tt>．ps</tt> はポストスクリプト形式のファイルです。画面に表示したり出
力するには <tt>gs</tt> あるいは <tt>ghostview</tt> を使います。

<item> <tt>．tgz, .tar.gz</tt> は <tt>tar</tt> で作ったアーカイブを 
<tt>gzip</tt> で圧縮したファイルです。

<item> <tt>．tex</tt> は TeX のソースファイルです。TeX は強力なタイプ
セットプログラムです。TeX を使うには様々な種類のある <tt>tex</tt> パッ
ケージをインストールしてください。ただし Slackware96 以前のバージョン
に含まれている NTeX はフォントが壊れているので注意すること。

<item> <tt>．texi</tt> は texinfo 形式のファイル(<tt>info</tt> 形式と比較して
ください)です。使うには <tt>texinfo</tt> が必要です。

<item> <tt>．xbm, .xpm, .xwd</tt> はグラフィックデータです。<tt>xpaint</tt> 
を使います。<tt>xv</tt> でも表示できます。

<item> <tt>．Z</tt> は <tt>compress</tt> で作った圧縮ファイルです。


<item> <tt>．zip</tt> は <tt>zip</tt> が作った圧縮ファイルです。<tt>zip</tt> 
と <tt>unzip</tt> を入手してください。

</itemize>

<sect> とりあえずおしまい <label id="The End">
<p>

おめでとう。これで Unix の一端を眺めて、Linux 上で仕事ができるようにな
りました。ここで紹介したものはごく限られた知識であり、Linux を快適に使
いこなせるようになるには練習が必要なことをお忘れなく。しかし、必要なソ
フトウェア一式を入手して、それらを使い始めれば、ここで示した知識で充分
間に合うはずです。

誰もがやってるように Linux を楽しみながら、さまざまなことを学んでいく
ことになるでしょう。DOS へ戻る必要はもはやありません。この文書を書くこ
とで、私自身が知識を整理できました。例え 3、4 人しか読者がいなくても、
この文書が誰かの役に立つことを望んでいます。

<sect1> 著作権表示(Copyright)

<p>

Unless otherwise stated, Linux HOWTO documents are copyrighted by their
respective authors. Linux HOWTO documents may be reproduced and distributed 
in whole or in part, in any medium physical or electronic, as long as
this copyright notice is retained on all copies. Commercial redistribution 
is allowed and encouraged; however, the author would like to be notified of 
any such distributions. 

All translations, derivative works, or aggregate works incorporating 
any Linux HOWTO documents must be covered under this copyright notice. 
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux HOWTO
coordinator at the address given below.

In short, we wish to promote dissemination of this information through as
many channels as possible. However, we do wish to retain copyright on the
HOWTO documents, and would like to be notified of any plans to redistribute
the HOWTOs. 

If you have questions, please contact Greg Hankins, the Linux HOWTO 
coordinator, at gregh@sunsite.unc.edu via email.

他に明示されていない限り、Linux HOWTO 集はそれぞれの著者が著作権を有し
ています。この著作権表示が全てに残されている限り、HOWTO 集は全体、もし
くは部分的に、あらゆる物理的、電気的な方法でコピー、再配布することがで
きます。商業的な配布も可能で推奨しますが、そのような場合は著者に一報し
てくださるようお願いします。

Linux HOWTO 集の翻訳や HOWTO から派生した文書、あるいは HOWTO を集めた
文書集などもこの著作権表示に従う必要があります。すなわち、HOWTO から派
生した文書を作った場合、その文書の配布も HOWTO の規定に従い、新たな制
限を加えることはできません。一定の条件のもとで例外措置も可能ですので、
詳細については以下に示す Linux HOWTO のコーディネータへ連絡してくださ
い。

簡単に言うと、私たちはあらゆる種類のチャンネルを通じて情報を広く伝えた
いと考えています。しかしながら、HOWTO 文書には著作権を設定しており、
HOWTO を配布する計画についてはあらかじめ連絡していただきたいと願ってい
ます。

疑問があれば Linux HOWTO のコーディネータである Greg Hankins
&lt;gregh@sunsite.unc.edu&gt; まで e-mail で連絡してください。

<sect1> 責任の放棄
<p>

``From DOS to Linux HOWTO'' は Guido Gonzato <tt><htmlurl
url="mailto:guido@ibogfs.df.unibo.it"
name="guido@ibogfs.df.unibo.it"></tt> が書きました。``Linux
Installation and Getting Started'' の著者、Matt Welsh、``Linux
frequently asked questions with answers'' の著者 Ian Jackson、
``Linux'' の著者 Giuseppe Zanetti に感謝します。また、メールで色々なこ
とを教えてくれた皆さんに感謝します。とりわけ Linux を作った Linus
Torvalds と GNU に感謝します。

この文書は「このまま(as is)」の形で提供されます。可能な限り正確である
ように務めていますが、この文書にある情報を使うときは自分の責任で実行し
てください。この文書の情報に従って生じたいかなる障害にも責任は負いませ
ん。

フィードバックを歓迎します。あらゆる種類のリクエストや提案、フレームな
どなどは自由に送ってください。

Linux と人生を楽しんでくださいね。

Guido   <tt/=8-)/

</article>
