diff --git a/ja_JP.eucJP/books/handbook/basics/chapter.sgml b/ja_JP.eucJP/books/handbook/basics/chapter.sgml index fc6ab19f21..9c91e270c0 100644 --- a/ja_JP.eucJP/books/handbook/basics/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/basics/chapter.sgml @@ -1,155 +1,590 @@ Unix の基礎知識 訳: &a.jp.nakai;, 1996 年 10 月 12 日. - - オンラインマニュアル - - FreeBSD についてのもっとも包括的なドキュメントは - マニュアルページの形式になっているものです. - FreeBSD システム上のほとんどすべてのプログラムには基本的な - 操作方法とさまざまな引数を説明しているリファレンスマニュアル - がついています. これらのマニュアルは man - コマンドで見ることができます. man - コマンドの使い方は簡単です : - - &prompt.user; man コマンド名 - - - コマンド名 - のところには知りたいコマンドの名前を入れます. たとえば, - ls コマンドについて知りたい場合には - 次のように入力します: - - &prompt.user; man ls - - オンラインマニュアルは 数字のついたセクションに - 分けられています : - - - - ユーザコマンド - - - - システムコールとエラー番号 - - - - C のライブラリ関数 - - - - デバイスドライバ - - - - ファイル形式 - - - - ゲームとほかのお楽しみ - - - - そのほかの情報 - - - - システムの管理と操作のためのコマンド - - - - カーネル開発者のための情報 - - - - 場合によっては, 同じことがらでもオンラインマニュアルでは - 複数のセクションに記載されていることがあります. たとえば, - chmod ユーザコマンドと - chmod() - システムコールがあります. この場合, man - コマンドでどちらを参照したいかをセクションで指定することが - できます : - - &prompt.user; man 1 chmod - - とすればユーザコマンドとしての chmod - のマニュアルページが表示されます. オンラインマニュアル上の特定の - セクションへの参照は通常, 書かれているドキュメントの - 括弧の中に示されています. ですから, &man.chmod.1; は - chmod - ユーザコマンドを, &man.chmod.2; - はシステムコールの方を示しています. - - コマンドの名前を知っていて, 単純にその使い方が分かる場合は - よいのですが, もしコマンドの名前を思い出せない場合には - どうしたらいいのでしょう? man に - スイッチをつければ, - コマンドデスクリプション中のキーワードから検索することができます - : - - &prompt.user; man -k mail - - このコマンドを使うことで, - “mail”というキーワードを含むコマンドの - 一覧を参照することができます. 実を言うと - apropos - コマンドを使うのと機能的には同じです. - - それから, /usr/bin - にある優れたコマンドすべてを目にしても, - それらの大半がどういった働きをするのか - まったく見当もつかないときは どうしたらよいでしょう. 単純に, - - &prompt.user; cd /usr/bin; man -f * - - あるいは同じ働きをする - - &prompt.user; cd /usr/bin; whatis * - - としましょう. + + 概要 + + 改訂: Chris Shumway + cshumway@cdrom.com, 2000 年 3 月 10 日. + + この章では FreeBSD + オペレーティングシステムの基本的なコマンドと機能について記述しています. + あなたが FreeBSD の初心者なら, + 何か質問する前にこの章を読んでおいた方がきっといいはずです. - - GNU の Info ファイル + + 許可属性(permissions; パーミッション) + + FreeBSD は BSD UNIX を起源とする歴史を持ち, + いくつかの鍵となる UNIX 思想にもとづいた基本設計がされています. + まず最も際だった特徴として最初に言えるのは, FreeBSD + がマルチユーザのオペレーティングシステムだということです. + FreeBSD は同時に働いている複数のユーザすべてを, + 完全に分離したタスク上で処理する能力を持っています. + また FreeBSD は, ハードウェアデバイス, 周辺装置, メモリ, + CPU 時間等への要求を, 各ユーザが平等に利用できるように適切に共有し, + 管理する役割を担っています. + + システムがマルチユーザをサポートしているため, + システムが管理する資源はすべて, + 誰がその資源を読み・書き・実行できるかを支配する, + 一組の許可属性を持っています. + これらの許可属性は 3 つの部分からなる 8 進数の形で格納されています. + それはそのファイルの所有者(owner)に対するもの, + そのファイルが所属するグループ(group)に対するもの, + その他(others)に対するものの 3 つです. + これを数字を使って表現すると, 次のようになります. + + + + + + + 許可属性 + ディレクトリの表示 + + + + + + 0 + 読み込み不可, 書き込み不可, 実行不可 + --- + + + + 1 + 読み込み不可, 書き込み不可, 実行可能 + --x + + + + 2 + 読み込み不可, 書き込み可能, 実行不可 + -w- + + + + 3 + 読み込み不可, 書き込み可能, 実行可能 + -wx + + + + 4 + 読み込み可能, 書き込み不可, 実行不可 + r-- + + + + 5 + 読み込み可能, 書き込み不可, 実行可能 + r-x + + + + 6 + 読み込み可能, 書き込み可能, 実行不可 + rw- + + + + 7 + 読み込み可能, 書き込み可能, 実行可能 + rwx + + + + + + ls -l で表示される詳細なディレクトリリストでは, + ファイルの所有者, グループ, その他への許可属性を示す欄があるのがわかります. + 次に示すのは, その部分だけ抜き出したものです. + + -rw-r--r-- + + 左から右へ見たときに最初にあたる文字は, それが + 普通のファイルなのか, ディレクトリなのか, + キャラクタ型のデバイス特殊ファイルなのか, + ブロック型のデバイス特殊ファイルなのか, + ソケットなのか, + その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です. + その次の rw- と書かれた 3 文字は, + そのファイルの所有者に許可を与えるものです. + その次の r-- の 3 文字は, + そのファイルが所属しているグループに許可を与えます. + 最後の r-- の 3 文字は, + システムに存在するその他のユーザに許可を与えます. + - は許可が与えられていないことを示します. + このファイルの例では, ファイルの所有者はこのファイルを読み書きでき, + ファイルの所属しているグループに属するユーザはファイルを読むことだけでき, + そのどちらでもないユーザは, + このファイルを読むだけできるように許可属性が与えられています. + 上の表によれば, このファイルに与えられた許可属性は + 644 となります. + ここで各数字は, このファイルの許可属性の 3 つの部分を表しています. + + ファイルについてはここまでの説明で十分です. しかし, + デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? + FreeBSD は, 大部分のハードウェアをファイルとして取り扱います. + そのため, プログラムからは普通のファイルとまったく同じようにオープンし, + データの読み書きができるようになっています. + これらのデバイス特殊ファイルは + /dev ディレクトリに収められています. + + ディレクトリもまた, ファイルと同様に扱われます. + それは読み込み/書き込み/実行の許可属性を持ちます. + ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます. + ディレクトリが実行可能になっているとき, + それはその中が探索できること, たとえば, + そのディレクトリ中のファイルリストが参照できることを意味します. + + + この他にも許可属性はありますが, いずれも + setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます. + ファイルの許可属性そのものについて, + また, それらの設定のしかたに関する詳しい情報は, + &man.chmod.1; マニュアルページを参照してください. + - FreeBSD には Free Software Foundation (FSF) - によるアプリケーションや - ユーティリティがたくさんあります. こうしたプログラムには - manページに加えて, “info” ファイルと呼ばれる - ハイパーテキスト形式のドキュメントが付属になっていて, - info コマンドや, emacs - をインストールしているなら emacs の info - モードで見ることができます. + + ディレクトリ構造 + + FreeBSD の用いているファイルシステムは多くの基本的なシステム動作を決定するもので, + その階層構造は極めて重要です. + ディレクトリ構造に関する完全な記述が &man.hier.7; + のマニュアルページにありますので, ここでは繰り返しません. + 詳しい情報は, &man.hier.7; をご覧ください. + + + 最も重要なディレクトリは, すべてのディレクトリの根(root)にあたる + / ディレクトリです. このディレクトリは起動時に一番最初にマウントされ, + 起動時に必要な基本システムが含まれています. + また, ルートディレクトリには, + 追加したい他のファイルシステムをマウントするためのマウントポイントも含まれます. + + + マウントポイントとはルートファイルシステムに存在する, + 追加のファイルシステムと接続するためのディレクトリのことです. + 標準的なマウントポイントには + /usr, /var, + /mnt, /cdrom + があります. + 通常これらのディレクトリについては, + /etc/fstab というファイル中のエントリが参照されます. + /etc/fstab + さまざまなファイルシステムとマウントポイントの表であり, + システムが参照します. + /etc/fstab に書かれたファイルシステムは + オプションが指定されていなければ, + 起動時に &man.rc.8; スクリプトによって自動的にマウントされます. + /etc/fstab + ファイルの書式やオプションに関しての詳細は + &man.fstab.5; をご覧ください. + - &man.info.1; コマンドを使うには, 単にこう入力します. + + シェル + + FreeBSD では日々の作業のほとんどは, + 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます. + シェルの主な仕事はコマンドを入力チャンネルから受け取り, + そしてそれらを実行することです. + 大部分のシェルはさらに組み込みの機能を持っていて, 日々の作業, + ファイル管理やファイル名の展開, コマンドライン編集, + コマンドマクロ, 環境変数などに便利です. + FreeBSD には sh(Bourne Shell) や csh(C-shell) が含まれています. + また, + これ以外にもたくさんのシェルが FreeBSD Ports コレクションから利用可能です. + tcsh や bash などの高機能なものは, これに含まれています. + + 「あなたは, どのシェルを使いますか?」という質問は, + まったく趣味の問題です. + あなたが C のプログラマだったとすれば, + tcsh のような C 風のシェルの方が落ち着くかもしれません. + Linux から来た人や UNIX のコマンドラインインタフェイスになじみがなければ, + bash を試すのも良いでしょう. + ポイントは, それぞれのシェルは, + あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ, + そして, どのシェルを使うことにするかを決めるのはあなた自身だということです. + + シェルの一般的な機能の一つに, ファイル名の補完があります. + コマンドやファイル名の最初の数文字を与えて TAB キーを押すことで, + シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます. + 例をあげましょう. 二つのファイル + foobar, foo.bar が + あったとします. foo.bar の方を削除しようとするとき + rm fo[TAB].[TAB] と入力します. + + するとシェルは rm + foo[BEEP].bar と出力するでしょう. + + [BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です. + これは複数のファイルがマッチしたため, + ファイル名の補完を完全に行なえなかったことを伝えています. + foobar と + foo.bar は + 両方とも fo ではじまりますが, + foo までなら補完できます. + ここで . を入力して TAB を押せば, + シェルはファイル名の残りの部分を補完できます. + + もう一つあげられるシェルの機能として, 環境変数があります. + 環境変数とは, シェルの環境変数空間におけるキーと値とのペアです. + この変数空間は, そのシェルから起動されたプログラムから参照でき, + それを利用してプログラムの設定を保存するのに利用されます. + 下の表は, 一般的な環境変数とその意味を示したものです. + + + + + + 変数名 + 意味 + + + + + + USER + 現在のログインユーザのユーザ名. + + + + PATH + コロンで区切られた実行ファイル探索のための + ディレクトリのリスト. + + + + DISPLAY + 接続する X11 ディスプレイのネットワーク名(存在する場合のみ). + + + + SHELL + 現在のシェル. + + + + TERM + ユーザの端末名. + 端末のケーパビリティを決定するのに使われる. + + + + TERMCAP + 種々の端末の機能を実現する端末のエスケープコードの + データベースのエントリ. + + + + OSTYPE + オペレーティングシステムの種別. + たとえば FreeBSD. + + + + MACHTYPE + システムが動作している CPU のアーキテクチャ. + + + + EDITOR + ユーザの選んだテキストエディタ. + + + + PAGER + ユーザの選んだテキストページャ. + + + + MANPATH + コロンで区切られたマニュアルページ探索のための + ディレクトリのリスト. + + + + + + 環境変数をセットしたりその値を見る方法は, + それぞれのシェルごとに多少異なります. + たとえば, csh や tcsh 等の C シェルでは + setenv を使います. + sh や bash 等の Bourne シェルでは + setexport + を使います. + たとえば, EDITOR 環境変数の値を + /usr/local/bin/emacs に + セットするか変更するならば次のようにします. + + setenv EDITOR /usr/local/bin/emacs + + Bourne シェルでは次のようになります. + + export EDITOR="/usr/local/bin/emacs" + + ほとんどのシェルでは, + コマンドライン中の変数名の前に $ 文字を置くことで, + 環境変数を展開させることができます. + たとえば, + echo $TERM$TERM が + セットされている内容を表示します. + それはシェルが $TERM を展開して + echo に渡しているからです. + + シェルはさまざまな特殊文字を, 特別なデータを表すものとして扱います. + その特殊文字はメタキャラクタと呼ばれます. + もっとも一般的なものは * で, + これはファイル名に含まれる, あらゆる文字を表します. + これらの特殊なメタキャラクタはファイル名の展開に使われます. + たとえば, echo * と入力すると + ls と入力したのとほとんど同じ結果を得られます. + これはシェルが * とマッチするすべてのファイルを + 受け取って echo のコマンドラインに渡し, 表示するからです. + + これらの特殊文字をシェルに解釈させないようにするため, + 特殊文字の前にバックスラッシュ文字 (\) + を置くことができます. + echo $TERM は, + あなたの端末が何にセットされているかを表示します. + echo \$TERM$TERM と + そのまま表示します. + + + シェルの変更 + + シェルを変更する一番簡単な方法は chsh + コマンドを使うことです. chsh を実行すると + 環境変数 EDITOR で示されたエディタが立ち上がります. + 環境変数をセットしていなかった時は + vi が立ち上がります. + Shell: の行を適宜変更してください. + + chsh に + オプションをつけると, + エディタを起動せずにシェルを変更することが可能です. + たとえば, シェルを bash に変えたいなら, 次のようにしてください. + + + &prompt.user; chsh -s /usr/local/bin/bash + + chsh をパラメータなしで実行し, + エディタでシェルを変更しても同じことができます. + + + 使おうと思っているシェルは必ず + /etc/shells 中に書かれているものでなければなりません. + シェルを Ports コレクションから + インストールしていたのであれば, すでにそれは行なわれていますが, + 手動でインストールした場合は, それを忘れずに行ってください. + + たとえば, bash + を手動で + /usr/local/bin + にインストールした場合 + 以下のようにする必要があります. + + &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells + + そして chsh を実行してください. + + + - &prompt.user; info + + テキストエディタ + + さまざまな FreeBSD の設定は, テキストファイルを編集することで行われます. + そのため, テキストエディタの扱いに慣れると良いでしょう. + FreeBSD には, 基本システムの一部として二, 三提供されるものと, + Ports collection から利用できる, たくさんのテキストエディタが用意されています. + + + 最も学習が簡単なエディタは, + easy editor の略で ee と呼ばれるものです. + ee を立ち上げるには, コマンドラインから + ee filename と入力します. + ここで filename は, + 編集しようとしているファイルの名前です. + たとえば, /etc/rc.conf を編集するには + ee /etc/rc.conf と入力します. + 一旦 ee の中に入れば, + エディタの機能を操作するコマンドはすべてディスプレイの上部に + 表示されています. キャレット ^ 文字は + キーボードのコントロールキーを意味しますので, ^e はコントロールキーと + e を一緒に押すという意味になります. + ee を終了するにはエスケープキーを押し, + そして leave editor を選びます. + ファイルが更新されていたときは, + エディタは変更をセーブするかどうかプロンプトを出します. + + FreeBSD には, 基本システムの一部として + vi, + Ports コレクションの一部として + emacsvim + といった, より強力なテキストエディタが用意されています. + これらのエディタはやや学習が複雑ですが, より強力で高い機能性を提供します. + しかし, あなたが多量のテキストを編集することを考えているなら, + vimemacs + といった強力なエディタを習得することは, + より多くの時間を節約することでしょう. + - おおまかなイントロダクションを - 見るには, h と入力します. - クイックコマンドリファレンスは ? - とします. + + さらに詳しい情報を得るには... + + + オンラインマニュアル + + FreeBSD についてのもっとも包括的な文書は, + マニュアルページの形式になっているものです. + FreeBSD システム上のほとんどすべてのプログラムには, + 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています. + これらのマニュアルは man コマンドで見ることができます. man + コマンドの使い方は簡単です. + + &prompt.user; man コマンド名 + + コマンド名 + のところには, 知りたいコマンドの名前を入れます. + たとえば ls コマンドについて知りたい場合には, + 次のように入力します. + + &prompt.user; man ls + + オンラインマニュアルは, + セクション番号で分類されています. + + + + ユーザコマンド + + + + システムコールとエラー番号 + + + + C のライブラリ関数 + + + + デバイスドライバ + + + + ファイル形式 + + + + ゲームや娯楽 + + + + さまざまな情報 + + + + システムの管理と操作のためのコマンド + + + + カーネル開発者のための情報 + + + + 時折, + 同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります. + たとえば, chmod ユーザコマンドと + chmod() + システムコールの場合がそれに該当します. + この場合, man コマンドにセクション番号を与えることで, + どちらを参照したいかを指定することができます. + + &prompt.user; man 1 chmod + + 上のようにすれば, + ユーザコマンド chmod + のマニュアルページが表示されます. + オンラインマニュアルの特定セクションへの参照は, + 慣習的に書かれている文書で括弧の中に示されます. + すなわち, &man.chmod.1; は chmod + ユーザコマンドを, &man.chmod.2; + はシステムコールの方を示しています. + + コマンドの名前を知っていて, + 単純にその使い方を知りたい場合はここまでの説明で十分でしょう. + しかし, + もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? + man に スイッチをつければ, + コマンド解説(description)の文章から, + 指定したキーワードを検索することができます. + + &prompt.user; man -k mail + + このコマンドにより, + mail + というキーワードをコマンド解説に含むコマンドの一覧が表示されます. + 実際には, これは apropos コマンドを使う場合と同等の機能です. + + それでは, /usr/bin + にあるさまざまなコマンドすべてを見ていて, + それらが実際にどう働くのかが, まったく見当もつかないときには + どうしたら良いでしょう? + そのときは単純に, + &prompt.user; cd /usr/bin; man -f * + とするか, あるいは同じ働きをする + &prompt.user; cd /usr/bin; whatis * + としてください. + + + + GNU の Info ファイル + + FreeBSD には Free Software Foundation (FSF) + によるアプリケーションや + ユーティリティがたくさん含まれています. + これらのプログラムには, マニュアルページに加えて + info ファイルと呼ばれる + ハイパーテキスト形式の文書が付属しています. + この文書は info コマンド, + あるいは emacs をインストールしているなら + emacs の info + モードで読むことができます. + + &man.info.1; コマンドを使うには, 単に次のように入力します. + + &prompt.user; info + + + h と入力すると, + 簡単な手引きを読むことができます. + クイックコマンドリファレンスは ? + を入力してください. +