/[ddp]/manuals/trunk/quick-reference/debian-reference.ja.xml
ViewVC logotype

Contents of /manuals/trunk/quick-reference/debian-reference.ja.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6752 - (show annotations) (download) (as text)
Wed Jun 24 14:26:57 2009 UTC (3 years, 11 months ago) by osamu
File MIME type: text/xml
File size: 1511470 byte(s)
update build
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!-- -*- DocBook -*- -->
4 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
5 "/usr/share/sgml/docbook/dtd/xml/4.2/docbookx.dtd" [
6 <!ENTITY % sgml.features "IGNORE">
7 <!ENTITY % xml.features "INCLUDE">
8 <!ENTITY % dbcent PUBLIC
9 "-//OASIS//ENTITIES DocBook Character Entities V4.2//EN"
10 "/usr/share/sgml/docbook/dtd/xml/4.2/dbcentx.mod"> %dbcent;
11 <!ENTITY % commondata SYSTEM "common.ent" > %commondata;
12 <!ENTITY % popcon SYSTEM "popcon.ent" > %popcon;
13 <!ENTITY % datadate1 SYSTEM "datadatepop.ent" > %datadate1;
14 <!ENTITY % pkgsize SYSTEM "pkgsize.ent" > %pkgsize;
15 <!ENTITY % datadate2 SYSTEM "datadatesize.ent"> %datadate2;
16 <!ENTITY % urlsdata SYSTEM "urls.ent" > %urlsdata;
17 ]>
18 <book lang="ja">
19 <bookinfo>
20 <title>Debianリファレンス</title>
21 <author> <firstname></firstname> <surname>青木</surname> </author>
22 <authorinitials>OA</authorinitials>
23 <abstract>
24 <para>This book is free; you may redistribute it and/or modify it under the terms
25 of the GNU General Public License of any version compliant to the Debian
26 Free Software Guidelines (DFSG). (日本語による参考説明:本書はフリーです;
27 Debianフリーソフトウェアガイドライン(DFSG)に適合するいかなるバージョンのGNU General Public
28 Licenseの条件の下ででも再配布や改変をすることを許可します。)</para>
29 </abstract>
30 <copyright>
31 <year>2007-2009</year>
32 <holder>Osamu Aoki(青木 修)</holder>
33 </copyright>
34 <legalnotice>
35 <para>本Debianリファレンス(第2版) (&build-date;) はシステムインストール後のユーザ案内書として、Debian
36 システムの広範な概論を提供します。本書は非開発者を対象にシェルコマンド例を通してシステム管理の多くの局面を説明します。</para>
37 </legalnotice>
38 </bookinfo>
39 <preface id="_preface">
40 <title>序章</title>
41 <simpara>この<ulink
42 url="&debianreferenceversionc;">Debianリファレンス(第2版)</ulink>(&build-date;)はシステムインストール後のユーザ向け案内書としてDebianのシステム管理に関する概論の提供を目指しています。</simpara>
43 <simpara>本書が対象とする読者は、<ulink url="&gnu;">GNU</ulink>/<ulink
44 url="&linux;">Linux</ulink>システムがどう機能するかを理解するのに、シェルスクリプトぐらいは学ぶ気はあるが、全てのCのソースまで読む気がない人です。</simpara>
45 <section id="_disclaimer">
46 <title>免責事項</title>
47 <simpara>一切保証は致しません。全ての商標はそれぞれの商標の所有者の財産です。</simpara>
48 <simpara>Debianシステム自体は動く標的です。このため最新状況を反映した正確な記述は困難です。現行の不安定版のDebianシステムを用いて本書は記していますが、皆様が読まれる時点ではすでに記載内容が古くなっているでしょう。</simpara>
49 <simpara>本書はあくまで二次的参考文献として扱ってください。本書は正式の案内書を置き換えません。著者及び本書への貢献者は本書中の誤謬や欠落や曖昧さが引き起こす結果に一切責任を負いません。</simpara>
50 </section>
51 <section id="_what_is_debian">
52 <title>Debianとはなにか</title>
53 <simpara><ulink
54 url="&debianproject;">Debianプロジェクト</ulink>はフリーなオペレーティングシステムを作ろうという共通目的を持った個人の集団です。そのディストリビューションは次の特徴があります:</simpara>
55 <itemizedlist>
56 <listitem>
57 <simpara>
58 ソフトウェアの自由へのコミットメント: <ulink
59 url="&debiansocialcontreguidelinesdfsg;">Debian社会契約とDebianフリーソフトウエアガイドライン(DFSG)</ulink>
60 </simpara>
61 </listitem>
62 <listitem>
63 <simpara>
64 インターネット上の分散型の無償ボランティア活動: <ulink
65 url="&httpwwwdebianorg;">http://www.debian.org</ulink>
66 </simpara>
67 </listitem>
68 <listitem>
69 <simpara>
70 多数のプリコンパイルされた高品質のソフトウエア。
71 </simpara>
72 </listitem>
73 <listitem>
74 <simpara>
75 セキュリティアップデートへの平易なアクセス提供による、安定性とセキュリティの重視。
76 </simpara>
77 </listitem>
78 <listitem>
79 <simpara>
80 不安定版<literal>unstable</literal>やテスト版<literal>testing</literal>アーカイブによる、最新のソフトウエアへの円滑なアップグレードの重視。
81 </simpara>
82 </listitem>
83 <listitem>
84 <simpara>
85 多数のサポートされたハードウエアーアーキテクチャー。
86 </simpara>
87 </listitem>
88 </itemizedlist>
89 <simpara>Debianの中のフリーソフトウエア構成要素は、<ulink url="&gnu;">GNU</ulink><ulink
90 url="&linux;">Linux</ulink><ulink url="&bsd;">BSD</ulink><ulink
91 url="&x;">X</ulink><ulink url="&isc;">ISC</ulink><ulink
92 url="&apache;">Apache</ulink><ulink
93 url="&ghostscript;">Ghostscript</ulink><ulink
94 url="&commonunixprintingsystem;">Common Unix Printing System </ulink><ulink
95 url="&samba;">Samba</ulink><ulink url="&gnome;">GNOME</ulink><ulink
96 url="&kde;">KDE</ulink><ulink url="&mozilla;">Mozilla</ulink><ulink
97 url="&openofficeorg;">OpenOffice.org</ulink><ulink
98 url="&vim;">Vim</ulink><ulink url="&tex;">TeX</ulink><ulink
99 url="&latex;">LaTeX</ulink><ulink url="&docbook;">DocBook</ulink><ulink
100 url="&perl;">Perl</ulink><ulink url="&python;">Python</ulink><ulink
101 url="&tcl;">Tcl</ulink><ulink url="&java;">Java</ulink><ulink
102 url="&ruby;">Ruby</ulink><ulink url="&php;">PHP</ulink><ulink
103 url="&berkeleydb;">Berkeley DB</ulink><ulink
104 url="&mysql;">MySQL</ulink><ulink
105 url="&postgresql;">PostgreSQL</ulink><ulink
106 url="&exim;">Exim</ulink><ulink url="&postfix;">Postfix</ulink><ulink
107 url="&mutt;">Mutt</ulink><ulink url="&freebsd;">FreeBSD</ulink><ulink
108 url="&openbsd;">OpenBSD</ulink><ulink url="&planj;">Plan
109 9</ulink>やその他の多くの独立のフリーソフトウエアのプロジェクトに由来します。Debianはこの多種多様なフリーソフトウエアを1つのシステムにまとめ上げます。</simpara>
110 </section>
111 <section id="_about_this_document">
112 <title>本書について</title>
113 <section id="_guiding_rules">
114 <title>編集指針</title>
115 <simpara>本書の作成にあたり次の編集指針を守りました:</simpara>
116 <itemizedlist>
117 <listitem>
118 <simpara>
119 他に良い文書があれば(著者裁量で)詳述しない
120 </simpara>
121 </listitem>
122 <listitem>
123 <simpara>
124 概論を提供し枝葉末節は省略する(<emphasis role="strong">全体像</emphasis>)
125 </simpara>
126 </listitem>
127 <listitem>
128 <simpara>
129 簡潔(<emphasis role="strong">KISS</emphasis>)
130 </simpara>
131 </listitem>
132 <listitem>
133 <simpara>
134 非GUIツールとコンソールを重視する。(<emphasis role="strong">シェル例示</emphasis>を使用)
135 </simpara>
136 </listitem>
137 <listitem>
138 <simpara>
139 車輪の再発明をしない。(<emphasis role="strong">既存の参考文献</emphasis>へのポインターの利用)
140 </simpara>
141 </listitem>
142 <listitem>
143 <simpara>
144 客観的であるようにする。(<ulink url="&popcon;">popcon</ulink>等の利用)
145 </simpara>
146 </listitem>
147 </itemizedlist>
148 <simpara>私はシステムの階層的側面やシステムの低レベルを明らかにしようとしました。</simpara>
149 </section>
150 <section id="_prerequisites">
151 <title>前提条件</title>
152 <simpara>読者はサポート情報を次より自ら取得するべきです(重要性の高いものからの順に列挙):</simpara>
153 <itemizedlist>
154 <listitem>
155 <simpara>
156 一般的情報は<ulink
157 url="&httpwwwdebianorg;">http://www.debian.org</ulink>にあるDebianサイト。
158 </simpara>
159 </listitem>
160 <listitem>
161 <simpara>
162 "<literal>/usr/share/doc/&lt;package_name&gt;</literal>"ディレクトリ下にある文書。
163 </simpara>
164 </listitem>
165 <listitem>
166 <simpara>
167 Unixスタイルの<emphasis role="strong">manページ</emphasis>: "<literal>dpkg -L
168 &lt;package_name&gt; |grep '/man/man.*/'</literal>"。
169 </simpara>
170 </listitem>
171 <listitem>
172 <simpara>
173 GNUスタイルの<emphasis role="strong">infoページ</emphasis>: "<literal>dpkg -L
174 &lt;package_name&gt; |grep '/info/'</literal>"。
175 </simpara>
176 </listitem>
177 <listitem>
178 <simpara>
179 バグレポート: <ulink
180 url="&httpbugsdebianorgpackage_name;">http://bugs.debian.org/&lt;package_name&gt;</ulink>
181 </simpara>
182 </listitem>
183 <listitem>
184 <simpara>
185 変化中の事や特定案件に関しては、<ulink
186 url="&httpwikidebianorg;">http://wiki.debian.org/</ulink>にあるDebianのWiki。
187 </simpara>
188 </listitem>
189 <listitem>
190 <simpara>
191 <ulink url="&httptldporg;">http://tldp.org/</ulink>
192 にあるLinux文書プロジェクト(TLDP)のHOWTO文書。
193 </simpara>
194 </listitem>
195 <listitem>
196 <simpara>
197 <ulink url="&httpwwwunixorg;">http://www.unix.org/</ulink>にあるOpen GroupのThe
198 UNIX System Home PageにあるSingle UNIX Specification、
199 </simpara>
200 </listitem>
201 <listitem>
202 <simpara>
203 <ulink
204 url="&httpwikipediaorg;">http://wikipedia.org/</ulink>にあるWikipediaのフリーの百科事典。
205 </simpara>
206 </listitem>
207 </itemizedlist>
208 <note>
209 <simpara>詳細な文書を読むには、"<literal>-doc</literal>"をサフィックスとする対応する文書パッケージをインストールする必要があるかもしれません。</simpara>
210 </note>
211 </section>
212 <section id="_conventions">
213 <title>文書様式</title>
214 <simpara>次のような、<literal>bash</literal>(1)シェルコマンド例示と点の後ろの箇条書き形式で本書は書かれています。</simpara>
215 <screen># &lt;rootアカウントからのコマンド&gt;
216 $ &lt;ユーザアカウントからのコマンド&gt;
217 </screen>
218 <itemizedlist>
219 <listitem>
220 <simpara>
221 &lt;なすべき事の叙述&gt;
222 </simpara>
223 </listitem>
224 </itemizedlist>
225 <simpara>これらのシェルプロンプトは使われるアカウントを区別します。これはちょうど環境変数として:
226 "<literal>PS1='\$'</literal>"と"<literal>PS2='
227 '</literal>"を設定した場合に相当します。これらの環境変数値はあくまで本書の読みやすさのためで、実際のインストール済みシステではほとんど見かけません。</simpara>
228 <note>
229 <simpara>"<literal>PS1='\$'</literal>"と"<literal>PS2='
230 '</literal>"という環境変数値の意味は<literal>bash</literal>(1)を参照下さい。</simpara>
231 </note>
232 <simpara>本文中に引用される<emphasis
233 role="strong">コマンドの断片</emphasis>はダブルクォーテションマーク間にタイプライタフォントで書き"<literal>aptitude
234 safe-upgrade</literal>"のように表現されます。</simpara>
235 <simpara>本文中に設定ファイルから引用された<emphasis
236 role="strong">文字データ</emphasis>はダブルクォーテションマーク間にタイプライタフォントで書き"<literal>deb-src</literal>"のように表現されます。</simpara>
237 <simpara><emphasis
238 role="strong">コマンド</emphasis>はその名前をタイプライタフォントで書き、場合によってはその後ろにmanページのセクション番号を括弧中に入れて書き<literal>bash</literal>(1)のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
239 <screen>$ man 1 bash</screen>
240 <simpara><emphasis
241 role="strong">manページ</emphasis>はその名前をタイプライタフォントで書き、その後ろにmanページのセクション番号を括弧中に入れて書き<literal>sources.list</literal>(5)のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
242 <screen>$ man 5 sources.list</screen>
243 <simpara><emphasis
244 role="strong">infoページ</emphasis>はダブルクォーテションマーク間にタイプライタフォントというコマンドの断片形式で書き"<literal>info
245 make</literal>"のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
246 <screen>$ info make</screen>
247 <simpara><emphasis
248 role="strong">ファイル名</emphasis>はダブルクォーテションマーク間にタイプライタフォントで書き"<literal>/etc/passwd</literal>"のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
249 <screen>$ sensible-pager "/etc/passwd"</screen>
250 <simpara><emphasis
251 role="strong">ディレクトリ名</emphasis>はダブルクォーテションマーク間にタイプライタフォントで書き"<literal>/etc/init.d/</literal>"のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
252 <screen>$ mc "/etc/init.d/"</screen>
253 <simpara><emphasis
254 role="strong">パッケージ名</emphasis>はその名をタイプライタフォントで書き"<literal>/etc/init.d/</literal>"のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
255 <screen>$ dpkg -L vim
256 $ apt-cache show vim
257 $ aptitude show vim</screen>
258 <simpara><emphasis
259 role="strong">文書</emphasis>は、その場所のファイル名でダブルクォーテションマーク間にタイプライタフォントで書き"<literal>/usr/share/doc/sysv-rc/README.runlevels.gz</literal>"や"<literal>/usr/share/doc/base-passwd/users-and-groups.html</literal>"のように表現されたり、その場所の<ulink
260 url="&url;">URL</ulink><ulink
261 url="&httpwwwdebianorg;">http://www.debian.org</ulink>のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
262 <screen>$ zcat "/usr/share/doc/sysv-rc/README.runlevels.gz" | sensible-pager
263 $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html"
264 $ sensible-browse "http://www.debian.org"</screen>
265 <simpara><emphasis
266 role="strong">環境変数</emphasis>は、頭に"<literal>$</literal>"がついた名前をダブルクォーテションマーク間にタイプライタフォントで書き、"<literal>$TERM</literal>"のように表現されます。読者は次の様にタイプして情報を得るように心がけてください。</simpara>
267 <screen>$ echo "$TERM"</screen>
268 </section>
269 <section id="_the_popcon">
270 <title>Popcon</title>
271 <simpara><ulink
272 url="&popcon;">Popcon</ulink>のデータは各パッケージの客観的人気の指標として提示されいます。それがダウンロードされた日付は&pop-date;で、
273 &pop-packages;を越すバイナリパッケージ数と&pop-architectures;のアーキテクチャーにまたがる&pop-submissions;つの提出レポートからなります。</simpara>
274 <note>
275 <simpara><literal>&arch;</literal>の不安定版<literal>unstable</literal>アーカイブは現在高々&all-packages;つのパッケージしか含みません。Popconデータは多くの古い設置システムからのレポートを含みます。</simpara>
276 </note>
277 <simpara>"votes"を意味する"V:"が前についたPopconの数は"100 *
278 (PCで最近実行されたパッケージに関するpopcon提出)/(全popcon提出)"として計算される。</simpara>
279 <simpara>"installs"を意味する"I:"が前についたPopconの数は"100 *
280 (PCにインストールされているパッケージに関するpopcon提出)/(全popcon提出)"として計算される。</simpara>
281 <note>
282 <simpara>Popconの数字はパッケージの重要性の絶対指標と考えるべきでない。統計を曲げる多くの因子があります。例えば、Popconに参加しているシステムの一部は"<literal>/bin</literal>"などのディレクトリをシステム性能向上のために"<literal>noatime</literal>"オプションでマウントすることで当該システムから"vote"することを実質的に禁止しているかもしれません。</simpara>
283 </note>
284 </section>
285 <section id="_the_package_size">
286 <title>パッケージサイズ</title>
287 <simpara>各パッケージの客観的指標としてパッケージサイズデータも提供されます。それは"<literal>apt-cache
288 show</literal>"や"<literal>aptitude
289 show</literal>"コマンドが(現在の<literal>&arch;</literal>アーキテクチャー上の<literal>unstable</literal>リリース上で)表示する"<literal>Installed-Size:</literal>"です。サイズはKiB(<ulink
290 url="&kibibyte;">Kibibyte</ulink> = 1024バイト単位)で表示されます。</simpara>
291 <note>
292 <simpara>小さなパッケージサイズのパッケージは<literal>unstable</literal>リリース中の当該パッケージが内容のある他パッケージを依存関係でインストールするためのダミーパッケージだからかもしれません。</simpara>
293 </note>
294 </section>
295 <section id="_bug_reports">
296 <title>バグ報告</title>
297 <simpara>何か問題を発見した場合には、<literal>debian-reference</literal>パッケージに対して<literal>reportbug</literal>(1)を用いてバグ報告をしてください。プレーンテキストバージョンかソースに対する"<literal>diff
298 -u</literal>"による修正提案を含めてください。</simpara>
299 </section>
300 </section>
301 <section id="_some_quotes_for_new_users">
302 <title>新規ユーザへの引用文</title>
303 <simpara>新規ユーザを啓蒙するDebianのメーリングリストで見つけた興味深い引用文を記します:</simpara>
304 <itemizedlist>
305 <listitem>
306 <simpara>
307 "This is Unix. It gives you enough rope to hang yourself."
308 「これはUnixです。首を括るのに十分なロープをあてがってくれますよ。」 --- Miquel van Smoorenburg
309 <literal>&lt;miquels at cistron.nl&gt;</literal>
310 </simpara>
311 </listitem>
312 <listitem>
313 <simpara>
314 "Unix IS user friendly... It's just selective about who its friends are."
315 「Unixはユーザフレンドリーです... 誰にフレンドリーにするかに人見知りするだけです。」 --- Tollef Fog Heen
316 <literal>&lt;tollef at add.no&gt;</literal>
317 </simpara>
318 </listitem>
319 </itemizedlist>
320 </section>
321 </preface>
322 <chapter id="_gnu_linux_tutorials">
323 <title>GNU/Linuxチュートリアル</title>
324 <simpara>コンピュータシステムを学ぶことは新しい外国語を学ぶことに似ていると考えます。チュートリアルブックは有用ですが、実際に自ら使って学ぶことが必要です。円滑なスタートが出きるように、いくつかの基本的なポイントを説明します。</simpara>
325 <simpara><ulink url="&debian;">Debian</ulink> <ulink url="&gnu;">GNU</ulink>/<ulink
326 url="&linux;">Linux</ulink> の強力なデザインは <ulink
327 url="&multiuser;">マルチユーザ</ulink><ulink url="&multitasking;">マルチタスク</ulink>
328 という <ulink url="&unix;">Unix</ulink> オペレーティングシステムに由来します。これら Unix と GNU/Linux
329 の特徴や類似点の強力さを活用することを覚えましょう。</simpara>
330 <simpara>Unix対象の文書を避けたり、GNU/Linuxに関する文書だけに頼ることは、有用な情報を見逃すことになるので止めましょう。</simpara>
331 <simpara>一般的なシステム管理に関する良好なオンラインリソースは、Debianのnon-freeアーカイブに<literal>rutebook</literal>パッケージ
332 (popcon: &pop-rutebook;)としてある"<ulink
333 url="&ruteuserstutorialandexposition;">Ruteユーザのためのチュートリアルと解説書(Rute User's
334 Tutorial and Exposition)</ulink>" が提供しています。</simpara>
335 <note>
336 <simpara><ulink url="&unixlike;">Unix
337 </ulink>システムをコマンドラインツールで少々使った経験があれば、私がここで説明することはすべてご存知でしょう。リアリティーチェックと記憶を呼び戻すのにこれを使ってください。</simpara>
338 </note>
339 <section id="_console_basics">
340 <title>コンソールの基礎</title>
341 <section id="_the_shell_prompt">
342 <title>シェルプロンプト</title>
343 <simpara><ulink url="&xwindowsystem;">X
344 Windowシステム</ulink><literal>gdm</literal>等のディスプレイマネージャとともにインストールした場合以外には、システム起動の際に文字のloginスクリーンが現れます。あなたのホスト名が<literal>foo</literal>と仮定すると、loginプロンプトは次です:</simpara>
345 <screen>foo login:</screen>
346 <simpara><ulink url="&gnome;">GNOME</ulink><ulink url="&kde;">KDE</ulink>のような<ulink
347 url="&gui;">GUI</ulink>環境をインストールした場合には、Ctrl-Alt-F1とすることでloginプロンプトが出て、Alt-F7とすることでGUI環境に戻れます(詳細は下記の<xref
348 linkend="_virtual_consoles"/>参照)。</simpara>
349 <simpara>loginプロンプトであなたのユーザ名(例えば<literal>penguin</literal>)を打鍵しEnterキーを押します。さらにあなたのパスワードを打鍵しEnterキーを再び押します。</simpara>
350 <note>
351 <simpara>Unixの伝統に従い、Debianシステムではユーザ名とパスワードに関して大文字小文字の区別をします。ユーザ名は通常小文字のみから選ばれます。最初のユーザアカウントは通常インストールの際に作られます。追加のユーザアカウントはrootによって<literal>adduser</literal>(8)を用いて作られます。</simpara>
352 </note>
353 <simpara>"<literal>/etc/motd</literal>" (本日のメッセージ:Message Of The
354 Day)に保存されている歓迎メッセージとコマンドプロンプトで次のように表示しシステムが起動されます。</simpara>
355 <screen>Debian GNU/Linux lenny/sid foo tty1
356 foo login: penguin
357 Password:
358 Last login: Sun Apr 22 09:29:34 2007 on tty1
359 Linux snoopy 2.6.20-1-amd64 #1 SMP Sun Apr 15 20:25:49 UTC 2007 x86_64
360
361 The programs included with the Debian GNU/Linux system are free software;
362 the exact distribution terms for each program are described in the
363 individual files in /usr/share/doc/*/copyright.
364
365 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
366 permitted by applicable law.
367 foo:~$</screen>
368 <simpara>ここで、歓迎メッセージの主要部分は"<literal>/etc/motd.tail</literal>"ファイルを編集することでカスタマイズできます。最初の行は"<literal>uname
369 -snrvm</literal>"用いたシステム情報から生成されます。</simpara>
370 <simpara>これであなたは<ulink url="&shell;">シェル</ulink>の中にいます。シェルはあなたからのコマンドを解釈します。</simpara>
371 </section>
372 <section id="_the_shell_prompt_under_x">
373 <title>Xの下でのシェルプロンプト</title>
374 <simpara>インストールの際に"Desktop environment"タスクを選定し<ulink
375 url="&gnome;">GNOME</ulink><literal>gdm</literal>とともに<ulink
376 url="&xwindowsystem;">X
377 Windowシステム</ulink>をインストールした場合には、システムの起動するとグラフィカルなloginプロンプトのスクリーンが表示されます。あなたのユーザ名とパスワードを入力することで非特権ユーザアカウントにloginできます。タブ(tab)を用いたりマウスの第一クリックを用いるとユーザ名とパスワードの間を行き来できます。</simpara>
378 <simpara><literal>gnome-terminal</literal>(1)や<literal>rxvt</literal>(1)や<literal>xterm</literal>(1)のような<literal>x-terminal-emulator</literal>プログラムをXの下で起動するとシェルプロンプトが得られます。GNOMEデスクトップ環境下では、"Applications"
379 → "Accessories" → "Terminal"とクリックしてもうまくいきます。</simpara>
380 <simpara>次の<xref linkend="_virtual_consoles"/>も参照ください.</simpara>
381 <simpara>デスクトップ環境(例えば<literal>fluxbox</literal>)次第ではメニューの起点がよく分からないことがあります。そんな時はスクリーンの中央を(右)クリックしてメニューが表示されることを期待しましょう。</simpara>
382 </section>
383 <section id="_the_root_account">
384 <title>rootアカウント</title>
385 <simpara>rootアカウントは<ulink
386 url="&superuser;">スーパーユーザ</ulink>とか特権ユーザとも呼ばれます。このアカウントからは次のようなシステム管理活動ができます。</simpara>
387 <itemizedlist>
388 <listitem>
389 <simpara>
390 ファイルのパーミッションによらずシステム上のいかなるファイルに関して、読み・書き・削除をする。
391 </simpara>
392 </listitem>
393 <listitem>
394 <simpara>
395 システム上のいかなるファイルに関して、ファイルの所有者やパーミッションを設定する。
396 </simpara>
397 </listitem>
398 <listitem>
399 <simpara>
400 システム上の非特権ユーザのパスワードを設定する。
401 </simpara>
402 </listitem>
403 <listitem>
404 <simpara>
405 パスワード無しにいかなるアカウントにもloginする。
406 </simpara>
407 </listitem>
408 </itemizedlist>
409 <simpara>rootアカウントの権限を使うには、この無制限の権限ゆえ配慮と責任ある行動が求められます。</simpara>
410 <warning>
411 <simpara>rootのパスワードを他人に決して教えてはいけない。</simpara>
412 </warning>
413 <note>
414 <simpara>ファイル(Debianシステムにとってはファイルの一種であるCD-ROM等のハードウエアデバイスも含む)のパーミッションは、非rootユーザによるそのファイルの使用やアクセスをできなくなくすることがあります。この様な状況の下ではrootアカウントを使うことが簡便なテスト法ですが、問題解決はファイルのパーミッションとユーザのグループのメンバーシップを適切に設定する必要があります(<xref
415 linkend="_filesystem_permissions"/>参照)。</simpara>
416 </note>
417 </section>
418 <section id="_the_root_shell_prompt">
419 <title>rootシェルプロンプト</title>
420 <simpara>rootのパスワードを使ってrootのシェルプロンプトを使えるようにする基本的な方法を次に記します。</simpara>
421 <itemizedlist>
422 <listitem>
423 <simpara>
424 文字ベースのloginプロンプトで、単に<literal>root</literal>と入力する。
425 </simpara>
426 </listitem>
427 <listitem>
428 <simpara>
429 GNOMEデスクトップ環境下で、"Applications" → "Accessories" → "Root Terminal"とクリックする。
430 </simpara>
431 </listitem>
432 <listitem>
433 <simpara>
434 何らかのユーザのシェルプロンプトから、"<literal>su -l</literal>"と入力する。(現ユーザの環境を一切引き継がない。)
435 </simpara>
436 </listitem>
437 <listitem>
438 <simpara>
439 何らかのユーザのシェルプロンプトから、"<literal>su</literal>"と入力する。(現ユーザの環境をある程度引き継ぐ。)
440 </simpara>
441 </listitem>
442 </itemizedlist>
443 </section>
444 <section id="_gui_system_administration_tools">
445 <title>GUIのシステム管理ツール</title>
446 <simpara>デスクトップのメニューがGUIのシステム管理ツールを適切な権限とともに自動的に起動しない場合、<literal>gnome-terminal</literal>(1)や<literal>rxvt</literal>(1)や<literal>xterm</literal>(1)のようなXターミナルエミュレータのrootシェルプロンプトから起動できます。</simpara>
447 <warning>
448 <simpara><literal>gdm</literal>(1)等のディスプレイマネージャのプロンプトに<literal>root</literal>と入力して、Xディスプレイ/セッションマネージャをrootアカウントのもとで決して起動してはいけません。</simpara>
449 </warning>
450 <warning>
451 <simpara>クリチカルな情報が表示されている際には、あなたのXスクリーンを覗き見られるかもしれないのでリモートの信頼できないGUIプログラムを決して実行してはいけません。</simpara>
452 </warning>
453 </section>
454 <section id="_virtual_consoles">
455 <title>仮想コンソール</title>
456 <simpara>デフォルトのDebianシステムでは、6つの切り替え可能な<ulink
457 url="&vtbaalike;">VT100様</ulink>の文字コンソールがあり、Linuxホスト上で直接コマンドシェルを起動できるようになっています。GUI環境下でない場合は、<literal>Left-Alt-key</literal><literal>F1</literal>
458
459 <literal>F6</literal>の中の一つのキーを同時に押すことで仮想コンソール間の切り替えができます。仮想ターミナルそれぞれに独立したアカウントでログインすることができ、。マルチユーザ環境を提供します。このマルチユーザ環境はUnixの偉大な機能で、癖になります。</simpara>
460 <simpara>X
461 Windowシステムの下では、<literal>Ctrl-Alt-F1</literal>キーを押す、つまり<literal>left-Ctrl-key</literal><literal>left-Alt-key</literal><literal>F1-key</literal>キーを同時に押すと文字コンソール1にアクセスできます。通常仮想コンソール7で実行されているX
462 Windowシステムへは<literal>Alt-F7</literal>を押すことにより戻れます。</simpara>
463 <simpara>これとは別の方法もあります。今と違う仮想ターミナルへ、例えば仮想ターミナル1への変更は次でできます:</simpara>
464 <screen># chvt 1</screen>
465 </section>
466 <section id="_how_to_leave_the_command_prompt">
467 <title>コマンドプロンプトからの退出方法</title>
468 <simpara>コマンドプロンプトで<literal>Ctrl-D</literal>、つまり<literal>left-Ctrl-key</literal><literal>d-key</literal>の同時押しをするとシェルでのアクティビティーを終了できます。文字コンソールの場合は、こうするとloginプロンプト戻ります。これらのコントロール文字は通常"control
469 D"と大文字を使って表記されますが、Shiftキーを押す必要はありません。また<literal>Ctrl-D</literal>に関する簡略表記<literal>^D</literal>も使われます。この代わりに"exit"とタイプすることができます。</simpara>
470 <simpara><literal>x-terminal-emulator</literal>(1)にあっては、このようにすることで<literal>x-terminal-emulator</literal>
471 のウインドーが閉じることができます。</simpara>
472 </section>
473 <section id="_how_to_shutdown_the_system">
474 <title>シャットダウンの方法</title>
475 <simpara>ファイル操作の際にパーフォーマンス向上のためにメモリへの<ulink
476 url="&cachingdata;">データのキャッシュ</ulink>がされる他の現代的なOSと同様に、Debianシステムでも電源を安全に切る前に適切なシャットダウン手順を取る必要があります。これはすべてのメモリ上の変更を強制的にディスクに書き出しすことで、ファイルの完全性を維持するためです。ソフトウエアによる電源コントロールができる場合、シャットダウン手続きはシステムの電源を自動的に落とします。(これがうまくいかない時には、シャットダウン手続きの後で数秒間電源ボタンを押す必要があるかもしれません。)</simpara>
477 <simpara>通常のマルチユーザモード下では、rootコマンドプロンプトから次によってシステムのシャットダウンをします:</simpara>
478 <screen># shutdown -h now</screen>
479 <simpara>シングルユーザモード下では、rootコマンドプロンプトから次によってシステムのシャットダウンをします:</simpara>
480 <screen># poweroff -i -f</screen>
481 <simpara>この他に、"<literal>/etc/inittab</literal>"に"<literal>ca:12345:ctrlaltdel:/sbin/shutdown
482 -t1 -a -h
483 now</literal>"と書かれていれば、<literal>Ctrl-Alt-Delete</literal>(<literal>left-Ctrl-key</literal><literal>left-Alt-Key</literal><literal>Delete</literal>の同時押し)を入力するシャットダウン方法もあります。</simpara>
484 </section>
485 <section id="_recovering_a_sane_console">
486 <title>まともなコンソールの回復</title>
487 <simpara>例えば"<literal>cat
488 &lt;some-binary-file&gt;</literal>"のような変な事をした後でスクリーンが無茶苦茶になった場合、コマンドプロンプトに"<literal>reset</literal>"と入力してください。このときコマンドを入力してもスクリーンには読み取れる表示がされないかもしれません。"<literal>clear</literal>"とすればスクリーンが消去できます。</simpara>
489 </section>
490 <section id="_additional_package_suggestions_for_the_newbie">
491 <title>初心者向け追加パッケージの提案</title>
492 <simpara>デスクトップ環境タスク抜きの最小限インストレーションDebianシステムですら基本的なUnix機能は提供されますが、コマンドラインやcursesに基づく<literal>mc</literal><literal>vim</literal>等のいくつかの文字ターミナルパッケージを<literal>aptitude</literal>(8)を使って追加インストールすることを初心者の最初の一歩としてお薦めします。</simpara>
493 <screen># aptitude update
494 ...
495 # aptitude install mc vim sudo
496 ...</screen>
497 <simpara>既にこれらのパッケージがインストールされている場合には何もインストールされません。</simpara>
498 <table id="listofinterestineprogrampackages" pgwide="0" frame="topbot" rowsep="1" colsep="1">
499 <title>興味あるテキストモードのプログラムパッケージのリスト。</title>
500 <tgroup cols="4">
501 <colspec colwidth="72" align="left"/>
502 <colspec colwidth="72" align="left"/>
503 <colspec colwidth="72" align="left"/>
504 <colspec colwidth="288" align="left"/>
505 <thead>
506 <row>
507 <entry>
508 パッケージ
509 </entry>
510 <entry>
511 popcon
512 </entry>
513 <entry>
514 サイズ
515 </entry>
516 <entry>
517 説明
518 </entry>
519 </row>
520 </thead>
521 <tbody>
522 <row>
523 <entry><ulink url="http://packages.debian.org/sid/mc"> <literal>mc</literal>
524 </ulink></entry>
525 <entry><ulink url="http://bugs.debian.org/mc">&pop-mc;</ulink></entry>
526 <entry><ulink url="http://packages.qa.debian.org/m/mc.html">&size-mc;</ulink></entry>
527 <entry>
528 テキストモードの全画面ファイルマネージャ
529 </entry>
530 </row>
531 <row>
532 <entry><ulink url="http://packages.debian.org/sid/sudo"> <literal>sudo</literal>
533 </ulink></entry>
534 <entry><ulink url="http://bugs.debian.org/sudo">&pop-sudo;</ulink></entry>
535 <entry><ulink url="http://packages.qa.debian.org/s/sudo.html">&size-sudo;</ulink></entry>
536 <entry>
537 ユーザに限定的なroot権限を与えるプログラム
538 </entry>
539 </row>
540 <row>
541 <entry><ulink url="http://packages.debian.org/sid/vim"> <literal>vim</literal>
542 </ulink></entry>
543 <entry><ulink url="http://bugs.debian.org/vim">&pop-vim;</ulink></entry>
544 <entry><ulink url="http://packages.qa.debian.org/v/vim.html">&size-vim;</ulink></entry>
545 <entry>
546 UnixテキストエディタVi IMproved(改良版Vi)、プログラマーのためのテキストエディタ(標準版)
547 </entry>
548 </row>
549 <row>
550 <entry><ulink url="http://packages.debian.org/sid/vim-tiny">
551 <literal>vim-tiny</literal> </ulink></entry>
552 <entry><ulink url="http://bugs.debian.org/vim-tiny">&pop-vimtiny;</ulink></entry>
553 <entry><ulink
554 url="http://packages.qa.debian.org/v/vim-tiny.html">&size-vimtiny;</ulink></entry>
555 <entry>
556 UnixテキストエディタVi IMproved(改良版Vi)、プログラマーのためのテキストエディタ(軽量版)
557 </entry>
558 </row>
559 <row>
560 <entry><ulink url="http://packages.debian.org/sid/emacs21">
561 <literal>emacs21</literal> </ulink></entry>
562 <entry><ulink url="http://bugs.debian.org/emacs21">&pop-emacscb;</ulink></entry>
563 <entry><ulink
564 url="http://packages.qa.debian.org/e/emacs21.html">&size-emacscb;</ulink></entry>
565 <entry>
566 GNUプロジェクトEmacs、Lispに基づく拡張可能なテキストエディタ(21版)
567 </entry>
568 </row>
569 <row>
570 <entry><ulink url="http://packages.debian.org/sid/emacs22">
571 <literal>emacs22</literal> </ulink></entry>
572 <entry><ulink url="http://bugs.debian.org/emacs22">&pop-emacscc;</ulink></entry>
573 <entry><ulink
574 url="http://packages.qa.debian.org/e/emacs22.html">&size-emacscc;</ulink></entry>
575 <entry>
576 GNUプロジェクトEmacs、Lispに基づく拡張可能なテキストエディタ(22版)
577 </entry>
578 </row>
579 <row>
580 <entry><ulink url="http://packages.debian.org/sid/w3m"> <literal>w3m</literal>
581 </ulink></entry>
582 <entry><ulink url="http://bugs.debian.org/w3m">&pop-wdm;</ulink></entry>
583 <entry><ulink url="http://packages.qa.debian.org/w/w3m.html">&size-wdm;</ulink></entry>
584 <entry>
585 テキストモードWWWブラウザ
586 </entry>
587 </row>
588 <row>
589 <entry><ulink url="http://packages.debian.org/sid/gpm"> <literal>gpm</literal>
590 </ulink></entry>
591 <entry><ulink url="http://bugs.debian.org/gpm">&pop-gpm;</ulink></entry>
592 <entry><ulink url="http://packages.qa.debian.org/g/gpm.html">&size-gpm;</ulink></entry>
593 <entry>
594 テキストコンソール上のUnix式のカットアンドペースト(daemon)
595 </entry>
596 </row>
597 </tbody>
598 </tgroup>
599 </table>
600 <simpara>いくつかの参考資料を読むのも良いことです。</simpara>
601 <table id="listofinformativentationpackages" pgwide="0" frame="topbot" rowsep="1" colsep="1">
602 <title>有用な文書パッケージのリスト。</title>
603 <tgroup cols="4">
604 <colspec colwidth="72" align="left"/>
605 <colspec colwidth="72" align="left"/>
606 <colspec colwidth="72" align="left"/>
607 <colspec colwidth="288" align="left"/>
608 <thead>
609 <row>
610 <entry>
611 パッケージ
612 </entry>
613 <entry>
614 popcon
615 </entry>
616 <entry>
617 サイズ
618 </entry>
619 <entry>
620 説明
621 </entry>
622 </row>
623 </thead>
624 <tbody>
625 <row>
626 <entry><ulink url="http://packages.debian.org/sid/doc-debian">
627 <literal>doc-debian</literal> </ulink></entry>
628 <entry><ulink url="http://bugs.debian.org/doc-debian">&pop-docdebian;</ulink></entry>
629 <entry><ulink
630 url="http://packages.qa.debian.org/d/doc-debian.html">&size-docdebian;</ulink></entry>
631 <entry>
632 Debianプロジェクトの文書、(Debian FAQ)他
633 </entry>
634 </row>
635 <row>
636 <entry><ulink url="http://packages.debian.org/sid/debian-policy">
637 <literal>debian-policy</literal> </ulink></entry>
638 <entry><ulink url="http://bugs.debian.org/debian-policy">&pop-debianpolicy;</ulink></entry>
639 <entry><ulink
640 url="http://packages.qa.debian.org/d/debian-policy.html">&size-debianpolicy;</ulink></entry>
641 <entry>
642 Debianポリシーマニュアルと関連文書
643 </entry>
644 </row>
645 <row>
646 <entry><ulink url="http://packages.debian.org/sid/developers-reference">
647 <literal>developers-reference</literal> </ulink></entry>
648 <entry><ulink
649 url="http://bugs.debian.org/developers-reference">&pop-developersreference;</ulink></entry>
650 <entry><ulink
651 url="http://packages.qa.debian.org/d/developers-reference.html">&size-developersreference;</ulink></entry>
652 <entry>
653 Debian開発者のためのガイドラインと情報
654 </entry>
655 </row>
656 <row>
657 <entry><ulink url="http://packages.debian.org/sid/maint-guide">
658 <literal>maint-guide</literal> </ulink></entry>
659 <entry><ulink url="http://bugs.debian.org/maint-guide">&pop-maintguide;</ulink></entry>
660 <entry><ulink
661 url="http://packages.qa.debian.org/m/maint-guide.html">&size-maintguide;</ulink></entry>
662 <entry>
663 Debian新メンテナ向けガイド
664 </entry>
665 </row>
666 <row>
667 <entry><ulink url="http://packages.debian.org/sid/debian-history">
668 <literal>debian-history</literal> </ulink></entry>
669 <entry><ulink
670 url="http://bugs.debian.org/debian-history">&pop-debianhistory;</ulink></entry>
671 <entry><ulink
672 url="http://packages.qa.debian.org/d/debian-history.html">&size-debianhistory;</ulink></entry>
673 <entry>
674 Debianプロジェクトの歴史
675 </entry>
676 </row>
677 <row>
678 <entry><ulink url="http://packages.debian.org/sid/debian-faq">
679 <literal>debian-faq</literal> </ulink></entry>
680 <entry><ulink url="http://bugs.debian.org/debian-faq">&pop-debianfaq;</ulink></entry>
681 <entry><ulink
682 url="http://packages.qa.debian.org/d/debian-faq.html">&size-debianfaq;</ulink></entry>
683 <entry>
684 Debian FAQ(よくある質問集)
685 </entry>
686 </row>
687 <row>
688 <entry><ulink url="http://packages.debian.org/sid/doc-linux-text">
689 <literal>doc-linux-text</literal> </ulink></entry>
690 <entry><ulink
691 url="http://bugs.debian.org/doc-linux-text">&pop-doclinuxtext;</ulink></entry>
692 <entry><ulink
693 url="http://packages.qa.debian.org/d/doc-linux-text.html">&size-doclinuxtext;</ulink></entry>
694 <entry>
695 Linux HOWTOとFAQ(テキスト版)
696 </entry>
697 </row>
698 <row>
699 <entry><ulink url="http://packages.debian.org/sid/doc-linux-html">
700 <literal>doc-linux-html</literal> </ulink></entry>
701 <entry><ulink
702 url="http://bugs.debian.org/doc-linux-html">&pop-doclinuxhtml;</ulink></entry>
703 <entry><ulink
704 url="http://packages.qa.debian.org/d/doc-linux-html.html">&size-doclinuxhtml;</ulink></entry>
705 <entry>
706 Linux HOWTOとFAQ(HTML版)
707 </entry>
708 </row>
709 <row>
710 <entry><ulink url="http://packages.debian.org/sid/sysadmin-guide">
711 <literal>sysadmin-guide</literal> </ulink></entry>
712 <entry><ulink
713 url="http://bugs.debian.org/sysadmin-guide">&pop-sysadminguide;</ulink></entry>
714 <entry><ulink
715 url="http://packages.qa.debian.org/s/sysadmin-guide.html">&size-sysadminguide;</ulink></entry>
716 <entry>
717 Linuxシステム管理者ガイド
718 </entry>
719 </row>
720 <row>
721 <entry><ulink url="http://packages.debian.org/sid/rutebook">
722 <literal>rutebook</literal> </ulink></entry>
723 <entry><ulink url="http://bugs.debian.org/rutebook">&pop-rutebook;</ulink></entry>
724 <entry><ulink
725 url="http://packages.qa.debian.org/r/rutebook.html">&size-rutebook;</ulink></entry>
726 <entry>
727 Linux: Ruteユーザのためのチュートリアルと解説書(non-free)
728 </entry>
729 </row>
730 </tbody>
731 </tgroup>
732 </table>
733 <simpara>これらのパッケージはrootのシェルプロンプトから次のコマンドを発行すればインストールできます。</simpara>
734 <screen># aptitude install package_name</screen>
735 </section>
736 <section id="_an_extra_user_account">
737 <title>追加のユーザアカウント</title>
738 <simpara>次の練習のためにあなたのメインのユーザアカウントを使いたくない場合には、例えば<literal>fish</literal>という追加のユーザアカウントを作成できます。rootシェルプロンプトで次のように入力します。</simpara>
739 <screen># adduser fish</screen>
740 <itemizedlist>
741 <listitem>
742 <simpara>
743 すべての質問に返事をする
744 </simpara>
745 </listitem>
746 </itemizedlist>
747 <simpara>こうすることで<literal>fish</literal>という名前の新しいアカウントが作られます。練習の後で、このユーザとそのホームディレクトリは次のようのすれば削除できます:</simpara>
748 <screen># deluser --remove-home fish</screen>
749 </section>
750 <section id="_sudo_configuration">
751 <title>sudoの設定</title>
752 <simpara>ラップトップPC上のデスクトップのDebianシステム等のような典型的単一ユーザワークステーションでは次のような単純な<literal>sudo</literal>(8)の設定をして、非特権ユーザ(例えば<literal>penguin</literal>)に管理者権限を(rootパスワードではなく)ユーザ自身のパスワードで与えることがよくあります。</simpara>
753 <screen># echo "penguin ALL=(ALL) ALL" &gt;&gt; /etc/sudoers</screen>
754 <simpara>このトリックの使用は、単一ユーザワークステーション上であなた自身が管理者でユーザである際のみに限るべきです。</simpara>
755 <warning>
756 <simpara>システムセキュリティ上非常に悪い事態を招くので、マルチユーザワークステーション上の通常ユーザアカウントに対してこの様な設定をしてはいけません。</simpara>
757 </warning>
758 <caution>
759 <simpara>上記例のような<literal>penguin</literal>のパスワードとアカウントはrootパスワードやrootアカウント同様の保護が必要です。</simpara>
760 </caution>
761 <caution>
762 <simpara>この文脈上の管理者権限はワークステーションに関するシステム管理業務をする権限を与えられた人に属します。そのような権限と能力を持っていなければ、あなたの会社の管理部門の管理職や上司とはいえこのような権限を与えてはいけません。</simpara>
763 </caution>
764 <note>
765 <simpara>特定デバイスや特定ファイルへのアクセスの権限を与えるには、<literal>sudo</literal>(8)をつかって得た<literal>root</literal>権限を用いるのではなく、<emphasis
766 role="strong">group</emphasis>を使って限定的アクセス与えることを考えるべきです。</simpara>
767 </note>
768 <note>
769 <simpara><literal>sudo</literal>(8)を使ってもう少し工夫された注意深い設定をすれば、共有システム上の他のユーザにrootパスワードを教えること無く限定的管理権限を許可することができます。こうすることは、誰が何をしたかを明らかにするので、複数の管理者がいるホストにおける責任の所在を明らかにします。ただ、誰にもそんな権限を与えたく無いかもしれません。</simpara>
770 </note>
771 </section>
772 <section id="_play_time">
773 <title>お遊びの時間</title>
774 <simpara>非特権ユーザアカウントを使う限り全くリスク無くDebianシステムでお遊びをする準備万端です。</simpara>
775 <simpara>何故なら、たとえデフォルトのインストール後ですらDebianシステムは非特権ユーザがシステムに損害を与えられないように的確なファイルパーミッションが設定されているからです。もちろん悪用可能な穴が残っているかもしれませんが、こんな問題まで心配する人はこのセクションを読んでいるべきではなく、<ulink
776 url="&securingdebianmanual;">Securing Debian Manual</ulink>を読むべきです。</simpara>
777 <simpara>Debianシステムを<ulink url="&unixlike;">Unix的</ulink>システムとして以下で学びましょう:</simpara>
778 <itemizedlist>
779 <listitem>
780 <simpara><xref linkend="_unix_like_filesystem"/>(基本コンセプト)。
781 </simpara>
782 </listitem>
783 <listitem>
784 <simpara><xref linkend="_midnight_commander_mc"/>(サバイバル手法)。
785 </simpara>
786 </listitem>
787 <listitem>
788 <simpara><xref linkend="_the_basic_unix_like_work_environment"/>(基本手法)。
789 </simpara>
790 </listitem>
791 <listitem>
792 <simpara><xref linkend="_the_simple_shell_command"/>(シェルのメカニズム)。
793 </simpara>
794 </listitem>
795 <listitem>
796 <simpara><xref linkend="_unix_like_text_processing"/>(文字処理手法)。
797 </simpara>
798 </listitem>
799 </itemizedlist>
800 </section>
801 </section>
802 <section id="_unix_like_filesystem">
803 <title>Unix-likeファイルシステム</title>
804 <simpara>GNU/Linuxや他の<ulink url="&unixlike;">Unix的</ulink>オペレーティングシステムでは、<ulink
805 url="&files;">ファイル</ulink><ulink
806 url="&directories;">ディレクトリ</ulink>に整理されています。すべてのファイルやディレクトリは、"<literal>/</literal>"を根(root)に持つ一本の大きな木(ツリー)のようにアレンジされています。</simpara>
807 <simpara>この様なファイルやディレクトリはいくつかのデバイスに展開することができます。あるデバイス上にあるファイルシステムを大きなファイルツリーにマウントするのに<literal>mount</literal>(8)が使われます。その逆に、それを切り離すのに<literal>umount</literal>(8)が使われます。最近のLinuxカーネルでは、<literal>mount</literal>(8)をオプションとともに用いると、ファイルツリーの一部を別のところと結びつけたり、共有・非共有・従属・バインド不可としてファイルシステムをマウントもできます。各ファイルシステムごとの使用可能なマウントオプションは"<literal>/share/doc/linux-doc-2.6.*/Documentation/filesystems/</literal>"にあります。</simpara>
808 <simpara>Unixシステム上の<emphasis role="strong">ディレクトリ</emphasis>は、一部の他システム上では<emphasis
809 role="strong">フォルダ</emphasis>と呼ばれます。Unixシステム上では"<literal>A:</literal>"のような<emphasis
810 role="strong">ドライブ</emphasis>というコンセプトが無いこと覚えておいてください。単一のファイルシステムがあって、そこにすべてが含まれています。これはWindowsと比べた際の大きな利点です。</simpara>
811 <section id="_unix_file_basics">
812 <title>Unixファイルの基礎</title>
813 <simpara>Unixファイルの基礎は以下です:</simpara>
814 <itemizedlist>
815 <listitem>
816 <simpara>
817 ファイル名は<emphasis
818 role="strong">大文字と小文字を区別</emphasis>します。"<literal>MYFILE</literal>"と"<literal>MyFile</literal>"は異なるファイルです。
819 </simpara>
820 </listitem>
821 <listitem>
822 <simpara>
823 <emphasis
824 role="strong">rootディレクトリ</emphasis>はフィルシステムの根(root)を意味して、単に"<literal>/</literal>"と記載されます。これをrootユーザのhomeディレクトリ"<literal>/root</literal>"とは混同しないでください。
825 </simpara>
826 </listitem>
827 <listitem>
828 <simpara>
829 全てのディレクトリには<emphasis
830 role="strong">"<literal>/</literal>"以外</emphasis>の文字・記号からなる名前がついています。rootディレクトリは例外で、その名前は"<literal>/</literal>"("スラッシュ"とか"rootディレクトリ"と読まれます)でその名前を変えることはできません。
831 </simpara>
832 </listitem>
833 <listitem>
834 <simpara>
835 各ファイルやディレクトリは、たどっていくとファイルに到達するディレクトリの列が示される、<emphasis
836 role="strong">完全に記述したファイル名</emphasis>とか<emphasis
837 role="strong">絶対ファイル名</emphasis>とか<emphasis
838 role="strong">パス</emphasis>により指定されます。これらの3つの表現は同義語です。
839 </simpara>
840 </listitem>
841 <listitem>
842 <simpara>
843 全ての<emphasis
844 role="strong">完全に記述したファイル名</emphasis>は"<literal>/</literal>"ディレクトリで始まり、ファイル名中の各ディレクトリやファイル名の間には"<literal>/</literal>"がはさまります。最初の"<literal>/</literal>"は
845 ディレクトリ名です。その他の"<literal>/</literal>"は、次のサブディレクトリとの区別をします。そして最後には実際のファイルの名前がきます。ちょっと混乱しそうですので、次の<emphasis
846 role="strong">完全に記述したファイル名</emphasis> の例をご覧ください:
847 "<literal>/usr/share/keytables/us.map.gz</literal>"。
848 一方このベース名である、"<literal>us.map.gz</literal>"だけをファイル名と呼ぶ人もあります。
849 </simpara>
850 </listitem>
851 <listitem>
852 <simpara>
853 root
854 ファイルシステムは"<literal>/etc/</literal>"や"<literal>/usr/</literal>"のような複数の枝を持ちます。これらのサブディレクトリもまた"<literal>/etc/init.d/</literal>"や"<literal>/usr/local/</literal>"のように、さらにサブディレクトリに枝別れします。これらの全体をまとめて<emphasis
855 role="strong">ディレクトリツリー</emphasis>と呼びます。絶対ファイル名はツリーの根元("<literal>/</literal>")から枝の先
856 (ファイル) までの経路として考えることもできます。また、あたかもディレクトリツリーを<emphasis
857 role="strong">家系</emphasis>図のように人が話すのを聞いたことがあるでしょう。あたかもそれぞれのサブディレクトリに<emphasis
858 role="strong"></emphasis>があるとし、パスはファイルの完全な祖先の系図のように表現します。root
859 ディレクトリではない他の場所から始まる相対パスもあります。ディレクトリ"<literal>../</literal>"は親ディレクトリを参照していることを覚えておきましょう。このような呼び方はディレクトリのような構造を持つ他の階層的ツリー状のデータ構造体でもよく使われます。
860 </simpara>
861 </listitem>
862 <listitem>
863 <simpara>
864 ハードディスクのような物理デバイスに対応したパス名の要素は存在しません。ここが、パス名に"<literal>C:\</literal>"のようなデバイス名が含まれる<ulink
865 url="&rtbb;">RT-11</ulink><ulink url="&cpm;">CP/M</ulink><ulink
866 url="&openvms;">OpenVMS</ulink><ulink url="&msdos;">MS-DOS</ulink><ulink
867 url="&amigaos;">AmigaOS</ulink><ulink url="&microsoftwindows;">Microsoft
868 Windows</ulink>と違う点です。(但し、通常のファイルシステム中に物理デバイスを示すディレクトリ項目はあります。<xref
869 linkend="_filesystem_internals"/>参照。)
870 </simpara>
871 </listitem>
872 </itemizedlist>
873 <note>
874 <simpara>ほとんど全ての文字や記号をファイル名中に<emphasis
875 role="strong">使えます</emphasis>が、実際そうすることは賢明ではありません。スペースやタブや改行や他の特殊文字:<literal>{
876 } ( ) [ ] ' ` " \ / &gt; &lt; | ; ! # &amp; ^ * % @
877 $</literal>はコマンドラインで特別な意味を持つので避けるべきです。名前の中の単語間には、ピリオドやハイフンや下線を選んで区別しましょう。各語頭を"<literal>LikeThis</literal>"のように語頭を大文字にすることもできます。経験を積んだLinuxのユーザはファイル名中にスペースが入ることを避けます。</simpara>
878 </note>
879 <note>
880 <simpara>"root"と言う言葉は"rootユーザ"と言う意味でも"rootディレクトリ"意味でも使われます。それがいずれかは使われている文脈から明かです。</simpara>
881 </note>
882 <note>
883 <simpara><emphasis role="strong">パス</emphasis>と言う言葉は上述の<emphasis
884 role="strong">完全に記述したファイル名</emphasis>に関して使われるばかりではなく<emphasis
885 role="strong">コマンドサーチパス</emphasis>にも使われます。どちらの意味かは文脈から明かです。</simpara>
886 </note>
887 <simpara>ファイル階層について詳細に学ぶ最も良い方法は、Filesystem Hierarchy
888 Standard("<literal>/usr/share/doc/debian-policy/fhs/fhs-2.3.txt.gz</literal>"や<literal>hier</literal>(7))に記述されています。手始めとして次の事実を覚えるべきです。</simpara>
889 <table id="listofusageofkeydirectories" pgwide="0" frame="topbot" rowsep="1" colsep="1">
890 <title>重要ディレクトリの使い方のリスト。</title>
891 <tgroup cols="2">
892 <colspec colwidth="144" align="left"/>
893 <colspec colwidth="360" align="left"/>
894 <thead>
895 <row>
896 <entry>
897 ディレクトリ
898 </entry>
899 <entry>
900 使い方
901 </entry>
902 </row>
903 </thead>
904 <tbody>
905 <row>
906 <entry>
907 <literal>/</literal>
908 </entry>
909 <entry>
910 "<literal>/</literal>"だけだとrootディレクトリを表します。
911 </entry>
912 </row>
913 <row>
914 <entry>
915 <literal>/etc/</literal>
916 </entry>
917 <entry>
918 ここはシステム全体の設定ファイルを置く場所です。
919 </entry>
920 </row>
921 <row>
922 <entry>
923 <literal>/var/log/</literal>
924 </entry>
925 <entry>
926 ここはシステムのログファイルを置く場所です。
927 </entry>
928 </row>
929 <row>
930 <entry>
931 <literal>/home/</literal>
932 </entry>
933 <entry>
934 ここは全ての非特権ユーザのホームディレクトリがあるディレクトリです。
935 </entry>
936 </row>
937 </tbody>
938 </tgroup>
939 </table>
940 </section>
941 <section id="_filesystem_internals">
942 <title>ファイルシステムの内側</title>
943 <simpara><emphasis role="strong">Unix の伝統</emphasis>に従い、Debian/Linux
944 システムはハードディスクや他のストレージデバイス上に存在する物理データを表す<ulink
945 url="&filesystem;">ファイルシステム</ulink>を提供し、コンソールスクリーンやリモートのシリアルコンソールなどのハードウェアデバイスとの相互作用が"<literal>/dev/</literal>"の下に統一された形式で表されています。</simpara>
946 <simpara>Debian/Linuxシステム上の、各々のファイルやディレクトリや名前付きパイプ(2つのプログラムがデータを共有する方法)や物理デバイスは、それぞれの所有者(owner)やデータが所属するグループ(group)や最終アクセス時間などの付帯属性(attribute)を記述する<ulink
947 url="&inode;">inode</ulink>と呼ばれるデータ構造を持ちます。 Debian GNU/Linux システムでの inode 構造
948 の正確な定義を知るには、"<literal>/usr/include/linux/fs.h</literal>" をご覧ください。
949 ほとんど全てをファイルシステム表現しようというアイデアはUnixの発明でしたし、現代的なLinuxカーネルはこのアイデアを一歩進めています。コンピュータ上で実行されているプロセス情報さえファイルシステム中に見つけられます。</simpara>
950 <simpara>このような物理的実体と内部プロセスの抽象的かつ統一された表現は非常にパワフルなので、多くの全く異なるデバイスに同じコマンドを使用して同種の操作が行えます。実行中のプロセスに繋がった特殊なファイルにデータを書き込むことでカーネルが如何に動作するかまで変更できます。</simpara>
951 <tip>
952 <simpara>ファイルツリーや物理的実体の間の関係を確認する必要がある際には、<literal>mount</literal>(8)を引数無しで実行してください。</simpara>
953 </tip>
954 </section>
955 <section id="_filesystem_permissions">
956 <title>ファイルシステムのパーミッション</title>
957 <simpara><ulink url="&unixlike;">Unix的</ulink>システムの<ulink
958 url="&filesystempermissions;">ファイルシステムのパーミッション</ulink>は次の3つの影響されるユーザのカテゴリのために定義されています: </simpara>
959 <itemizedlist>
960 <listitem>
961 <simpara>
962 ファイルを所有する<emphasis role="strong">ユーザ(user)</emphasis>(<emphasis
963 role="strong">u</emphasis>)
964 </simpara>
965 </listitem>
966 <listitem>
967 <simpara>
968 ファイルが所属する<emphasis role="strong">グループ(group)</emphasis>中の他ユーザ(<emphasis
969 role="strong">g</emphasis>)
970 </simpara>
971 </listitem>
972 <listitem>
973 <simpara>
974 "世界"や"全員"とも呼ばれる、全<emphasis role="strong">他ユーザ(other)</emphasis>(<emphasis
975 role="strong">o</emphasis>)
976 </simpara>
977 </listitem>
978 </itemizedlist>
979 <simpara>ファイルでは、それぞれに対応するパーミッションは次のようになります:</simpara>
980 <itemizedlist>
981 <listitem>
982 <simpara><emphasis role="strong">読み(read)</emphasis> (<emphasis
983 role="strong">r</emphasis>): ファイル内容確認可能
984 </simpara>
985 </listitem>
986 <listitem>
987 <simpara><emphasis role="strong">書き(write)</emphasis> (<emphasis
988 role="strong">w</emphasis>): ファイル内容変更可能
989 </simpara>
990 </listitem>
991 <listitem>
992 <simpara><emphasis role="strong">実行(execute)</emphasis> (<emphasis
993 role="strong">x</emphasis>): ファイルをコマンド実行可能
994 </simpara>
995 </listitem>
996 </itemizedlist>
997 <simpara>ディレクトリでは、対応するパーミッションはそれぞれ次のようになります:</simpara>
998 <itemizedlist>
999 <listitem>
1000 <simpara><emphasis role="strong">読み(read)</emphasis> (<emphasis
1001 role="strong">r</emphasis>): ディレクトリ内容リスト可能
1002 </simpara>
1003 </listitem>
1004 <listitem>
1005 <simpara><emphasis role="strong">書き(write)</emphasis> (<emphasis
1006 role="strong">w</emphasis>): ディレクトリへのファイルの追加削除可能
1007 </simpara>
1008 </listitem>
1009 <listitem>
1010 <simpara><emphasis role="strong">実行(execute)</emphasis> (<emphasis
1011 role="strong">x</emphasis>): ディレクトリ内のファイルへのアクセス可能
1012 </simpara>
1013 </listitem>
1014 </itemizedlist>
1015 <simpara>ここで、ディレクトリに関する<emphasis
1016 role="strong">実行(execute)</emphasis>許可とはディレクトリ内のファイルへの読みを許可するのみならず、サイズや変更時間のようなアトリビュート閲覧を許可します。</simpara>
1017 <simpara>ファイルやディレクトリのパーミッション情報他を表示するには、<literal>ls</literal>(1)が使われます。"<literal>-l</literal>"オプション付きでこれを実行すると、次の情報がこの順序で表示されます:</simpara>
1018 <itemizedlist>
1019 <listitem>
1020 <simpara>
1021 <emphasis role="strong">ファイルのタイプ</emphasis>(最初の文字)
1022 </simpara>
1023 </listitem>
1024 <listitem>
1025 <simpara>
1026 ファイルのアクセス<emphasis
1027 role="strong">パーミッション</emphasis>(次の9文字。ユーザとグループと他者の順にそれぞれに対して3文字から構成されている)
1028 </simpara>
1029 </listitem>
1030 <listitem>
1031 <simpara>
1032 ファイルへの<emphasis role="strong">ハードリンク数</emphasis>
1033 </simpara>
1034 </listitem>
1035 <listitem>
1036 <simpara>
1037 ファイルを所有する<emphasis role="strong">ユ-ザー(user)</emphasis>の名前
1038 </simpara>
1039 </listitem>
1040 <listitem>
1041 <simpara>
1042 ファイルが所属する<emphasis role="strong">グループ(group)</emphasis>
1043 </simpara>
1044 </listitem>
1045 <listitem>
1046 <simpara>
1047 ファイルの<emphasis role="strong">サイズ</emphasis>(文字数、バイト)
1048 </simpara>
1049 </listitem>
1050 <listitem>
1051 <simpara>
1052 ファイルの<emphasis role="strong">日時</emphasis>(mtime)
1053 </simpara>
1054 </listitem>
1055 <listitem>
1056 <simpara>
1057 ファイルの<emphasis role="strong">名前</emphasis>
1058 </simpara>
1059 </listitem>
1060 </itemizedlist>
1061 <table id="listofthefirstchacteroflsloutput" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1062 <title>"<literal>ls -l</literal>"の出力の最初の文字のリスト</title>
1063 <tgroup cols="2">
1064 <colspec colwidth="144" align="left"/>
1065 <colspec colwidth="360" align="left"/>
1066 <thead>
1067 <row>
1068 <entry>
1069 文字
1070 </entry>
1071 <entry>
1072 意味
1073 </entry>
1074 </row>
1075 </thead>
1076 <tbody>
1077 <row>
1078 <entry>
1079 <literal>-</literal>
1080 </entry>
1081 <entry>
1082 通常ファイル
1083 </entry>
1084 </row>
1085 <row>
1086 <entry>
1087 <literal>d</literal>
1088 </entry>
1089 <entry>
1090 ディレクトリ
1091 </entry>
1092 </row>
1093 <row>
1094 <entry>
1095 <literal>l</literal>
1096 </entry>
1097 <entry>
1098 シムリンク
1099 </entry>
1100 </row>
1101 <row>
1102 <entry>
1103 <literal>c</literal>
1104 </entry>
1105 <entry>
1106 文字デバイス名
1107 </entry>
1108 </row>
1109 <row>
1110 <entry>
1111 <literal>b</literal>
1112 </entry>
1113 <entry>
1114 ブロックデバイス名
1115 </entry>
1116 </row>
1117 <row>
1118 <entry>
1119 <literal>p</literal>
1120 </entry>
1121 <entry>
1122 名前付きパイプ
1123 </entry>
1124 </row>
1125 <row>
1126 <entry>
1127 <literal>s</literal>
1128 </entry>
1129 <entry>
1130 ソケット
1131 </entry>
1132 </row>
1133 </tbody>
1134 </tgroup>
1135 </table>
1136 <simpara>rootアカウントから<literal>chown</literal>(1)を使用することでファイルの所有者を変更します。ファイルの所有者又はrootアカウントから<literal>chgrp</literal>(1)を使用することでファイルのグループを変更します。ファイルの所有者又はrootアカウントから<literal>chmod</literal>(1)を使用することでファイルやディレクトリのアクセス権を変更します。<literal>foo</literal>ファイルの操作の基本的文法は次の通り: </simpara>
1137 <screen># chown &lt;newowner&gt; foo
1138 # chgrp &lt;newgroup&gt; foo
1139 # chmod [ugoa][+-=][rwxXst][,...] foo</screen>
1140 <simpara>例えば、ディレクトリツリーの所有者をユーザ<literal>foo</literal>に変更し、グループ<literal>bar</literal>で共有する場合、rootアカウントから次のコマンドを実行します:</simpara>
1141 <screen># cd /some/location/
1142 # chown -R foo:bar .
1143 # chmod -R ug+rwX,o=rX .</screen>
1144 <simpara>更に特殊なパーミッションビットが3つ存在します:</simpara>
1145 <itemizedlist>
1146 <listitem>
1147 <simpara><emphasis role="strong">セットユーザID</emphasis> (ユーザの<emphasis
1148 role="strong">x</emphasis>に代えて<emphasis role="strong">s</emphasis><emphasis
1149 role="strong">S</emphasis>)。
1150 </simpara>
1151 </listitem>
1152 <listitem>
1153 <simpara><emphasis role="strong">セットグループID</emphasis> (グループの<emphasis
1154 role="strong">x</emphasis>に代えて<emphasis role="strong">s</emphasis><emphasis
1155 role="strong">S</emphasis>)。
1156 </simpara>
1157 </listitem>
1158 <listitem>
1159 <simpara><emphasis role="strong">スティッキビット</emphasis> (他ユーザの<emphasis
1160 role="strong">x</emphasis>に代えて<emphasis role="strong">t</emphasis><emphasis
1161 role="strong">T</emphasis>)。
1162 </simpara>
1163 </listitem>
1164 </itemizedlist>
1165 <simpara>ここで、これらのビットの"<literal>ls -l</literal>"のアウトプットはこれらの出力によってかくされた実行ビットが<emphasis
1166 role="strong">非設定(unset)</emphasis>の場合<emphasis
1167 role="strong">大文字</emphasis>となります。</simpara>
1168 <simpara><emphasis
1169 role="strong">セットユーザID</emphasis>を実行ファイルにセットすると、ユーザはファイルの所有者ID(例えば、<emphasis
1170 role="strong">root</emphasis>) を使って実行ファイルを実行することを許可されます。同様に、<emphasis
1171 role="strong">セットグループID</emphasis>を実行ファイルにセットすると、ユーザはファイルのグループID(例えば、<emphasis
1172 role="strong">root</emphasis>)
1173 を使って実行ファイルを実行することを許可されます。これらの設定はセキュリティを破壊するリスクを引き起こすので、これらのビットを有効にするには特別な注意が必要です。</simpara>
1174 <simpara><emphasis
1175 role="strong">セットグループID</emphasis>sをディレクトリに対して有効にすると、ディレクトリに作成した全ファイルがディレクトリの<emphasis
1176 role="strong">グループ</emphasis>に所属するという<ulink
1177 url="&bsdlike;">BSD的</ulink>ファイル生成手法が有効になります。 </simpara>
1178 <simpara><emphasis
1179 role="strong">スティッキビット</emphasis>をディレクトリに対して有効にすると、ディレクトリにあるファイルがファイルの所有者以外から削除されるのを防ぎます。"<literal>/tmp</literal>"やグループの書き込み可能なディレクトリなどのworld-writable
1180 なディレクトリにあるファイルの内容を安全にするためには、<emphasis
1181 role="strong">書き込み</emphasis>パーミッションを無効にするだけでなく、ディレクトリに<emphasis
1182 role="strong">スティッキビット</emphasis>もセットする必要があります。さもなければ、ディレクトリに書き込みできるユーザにより、ファイルが削除され、同じ名前で新しいファイルが作成されることを許してしまいます。</simpara>
1183 <simpara>ファイルパーミッションの興味ある例を次にいくつか示します。</simpara>
1184 <screen>$ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4
1185 crw------- 1 root root 108, 0 2007-04-29 07:00 /dev/ppp
1186 -rw-r--r-- 1 root root 1427 2007-04-16 00:19 /etc/passwd
1187 -rw-r----- 1 root shadow 943 2007-04-16 00:19 /etc/shadow
1188 -rwsr-xr-x 1 root root 700056 2007-04-22 05:29 /usr/sbin/exim4
1189 $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
1190 drwxrwxrwt 10 root root 4096 2007-04-29 07:59 /tmp
1191 drwxrwsr-x 10 root staff 4096 2007-03-24 18:48 /usr/local
1192 drwxrwsr-x 4 root src 4096 2007-04-27 00:31 /usr/src
1193 drwxrwsr-x 2 root mail 4096 2007-03-28 23:33 /var/mail
1194 drwxrwxrwt 2 root root 4096 2007-04-29 07:11 /var/tmp</screen>
1195 <simpara><literal>chmod</literal>(1)を用いて、ファイルパーミッションを記述するためのもう一つの数字モードが存在します。この数字モードは8進数を使った3桁から4桁の数字を用います。 </simpara>
1196 <table id="thenumericmodefoinchmodbcommands" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1197 <title><literal>chmod</literal>(1)コマンドで用いられるファイルパーミッションの数字モード。</title>
1198 <tgroup cols="2">
1199 <colspec colwidth="144" align="left"/>
1200 <colspec colwidth="360" align="left"/>
1201 <thead>
1202 <row>
1203 <entry>
1204 数字
1205 </entry>
1206 <entry>
1207 意味
1208 </entry>
1209 </row>
1210 </thead>
1211 <tbody>
1212 <row>
1213 <entry>
1214 1桁目(任意)
1215 </entry>
1216 <entry>
1217 <emphasis role="strong">セットユーザID</emphasis> (=4)と<emphasis
1218 role="strong">セットグループID</emphasis> (=2)と<emphasis
1219 role="strong">スティキービット</emphasis> (=1)の和
1220 </entry>
1221 </row>
1222 <row>
1223 <entry>
1224 2桁目
1225 </entry>
1226 <entry>
1227 <emphasis role="strong">ユーザ</emphasis>に関して、<emphasis
1228 role="strong">読み(read)</emphasis> (=4)と<emphasis
1229 role="strong">書き(write)</emphasis> (=2)と<emphasis
1230 role="strong">実行(execute)</emphasis> (=1)ファイル許可の和
1231 </entry>
1232 </row>
1233 <row>
1234 <entry>
1235 3桁目
1236 </entry>
1237 <entry>
1238 <emphasis role="strong">グループ</emphasis>に関して、同上
1239 </entry>
1240 </row>
1241 <row>
1242 <entry>
1243 4桁目
1244 </entry>
1245 <entry>
1246 <emphasis role="strong">ユーザ</emphasis>に関して、同上
1247 </entry>
1248 </row>
1249 </tbody>
1250 </tgroup>
1251 </table>
1252 <simpara>これは複雑に聞こえるかもしれませんが、実際は本当にシンプルです。"<literal>ls
1253 -l</literal>"コマンドの出力の最初の数列(2〜10列)を見て、それをファイルパーミッションのバイナリ表記(2進数)("-"を"0"、"rwx"を"1""-")として読むと、この数字モードの値はファイルパーミッションの8進数表現として意味を持ちます。例えば、次を試してみてください:</simpara>
1254 <screen>$ touch foo bar
1255 $ chmod u=rw,go=r foo
1256 $ chmod 644 bar
1257 $ ls -l foo bar
1258 -rw-r--r-- 1 penguin penguin 17 2007-04-29 08:22 bar
1259 -rw-r--r-- 1 penguin penguin 12 2007-04-29 08:22 foo</screen>
1260 <tip>
1261 <simpara>シェルスクリプトから"<literal>ls
1262 -l</literal>"で表示される情報にアクセスする必要がある際には、<literal>test</literal>(1)や<literal>stat</literal>(1)や<literal>readlink</literal>(1)のような適切なコマンドの使用を考えるべきです。シェル組込みコマンドの"<literal>[</literal>"や"<literal>test</literal>"を使うのも手です。</simpara>
1263 </tip>
1264 </section>
1265 <section id="_control_of_permissions_for_newly_created_files_umask">
1266 <title>新規作成ファイルのパーミッションのコントロール:umask</title>
1267 <simpara>新規作成ファイルのやディレクトリに適用されるパーミッションは<literal>umask</literal>シェル組込みコマンドを使うことにより制限できます。<literal>dash</literal>(1)か<literal>bash</literal>(1)か<literal>builtins</literal>(7)をご覧ください。 </simpara>
1268 <screen> (file permissions) = (requested file permissions) &amp; ~(umask value)</screen>
1269 <table id="theumaskvalueexamples" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1270 <title><emphasis role="strong">umask</emphasis>値の例。</title>
1271 <tgroup cols="4">
1272 <colspec colwidth="72" align="left"/>
1273 <colspec colwidth="72" align="left"/>
1274 <colspec colwidth="72" align="left"/>
1275 <colspec colwidth="288" align="left"/>
1276 <thead>
1277 <row>
1278 <entry>
1279 umask
1280 </entry>
1281 <entry>
1282 使い方
1283 </entry>
1284 <entry>
1285 作成されるファイルパーミッション
1286 </entry>
1287 <entry>
1288 作成されるディレクトリパーミッション
1289 </entry>
1290 </row>
1291 </thead>
1292 <tbody>
1293 <row>
1294 <entry>
1295 <literal>0022</literal>
1296 </entry>
1297 <entry>
1298 ユーザのみにより書込み可
1299 </entry>
1300 <entry>
1301 <literal>-rw-r--r--</literal>
1302 </entry>
1303 <entry>
1304 <literal>-rwxr-xr-x</literal>
1305 </entry>
1306 </row>
1307 <row>
1308 <entry>
1309 <literal>0002</literal>
1310 </entry>
1311 <entry>
1312 グループにより書込み可
1313 </entry>
1314 <entry>
1315 <literal>-rw-rw-r--</literal>
1316 </entry>
1317 <entry>
1318 <literal>-rwxrwxr-x</literal>
1319 </entry>
1320 </row>
1321 </tbody>
1322 </tgroup>
1323 </table>
1324 <simpara>Debianシステムはユーザ専用グループ(UPG)方式がデフォルト方式です。新しいユーザがシステムに追加される毎にUPGは作成されます。UPGはそのグループを作成したユーザと同じ名前を持ち、そのユーザがUPGの唯一のメンバーです。UPG方式では、全ユーザが各自専用のグループを持つのでumaskを<literal>0002</literal>と設定しても安全です。(一部Unix系システムでは全一般ユーザを1つの<emphasis
1325 role="strong"><literal>users</literal></emphasis>グループに所属させることがよく行われます。そのような場合には安全のため<literal>0022</literal>とumaskを設定しましょう。)</simpara>
1326 </section>
1327 <section id="_permissions_for_groups_of_users_group">
1328 <title>ユーザのグループ(group)のパーミッション</title>
1329 <simpara>グループのパーミッションを特定ユーザに適用するには、"<literal>sudo
1330 vigr</literal>"を用いてそのユーザをグループのメンバーにする必要があります。</simpara>
1331 <note>
1332 <simpara>もし"<literal>auth optional
1333 pam_group.so</literal>"行が"<literal>/etc/pam.d/common-auth</literal>"に書き加えれ、"<literal>/etc/security/group.conf</literal>"に対応する設定がされていれば、実際のユーザのグループメンバーシップは動的に割り当てられます。(<xref
1334 linkend="_authentication"/>参照。)</simpara>
1335 </note>
1336 <simpara>ハードウエアデバイスはDebianシステム上では一種のファイルでしかありません。CD-ROMやUSBメモリスティックのようなデバイスをユーザアカウントからアクセスするのに問題があった場合にはそのユーザを適切なグループのメンバーにしましょう。</simpara>
1337 <simpara>いくつかのシステムが供給するグループはそのメンバーに<literal>root</literal>権限無しに特定のファイルやデバイスにアクセスすることを可能にします。</simpara>
1338 <table id="listofnotablesysupsforfileaccess" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1339 <title>ファイルアクセスのためにシステムが供給する特記すべきグループのリスト。</title>
1340 <tgroup cols="2">
1341 <colspec colwidth="144" align="left"/>
1342 <colspec colwidth="360" align="left"/>
1343 <thead>
1344 <row>
1345 <entry>
1346 グループ
1347 </entry>
1348 <entry>
1349 アクセスできるファイルやデバイス
1350 </entry>
1351 </row>
1352 </thead>
1353 <tbody>
1354 <row>
1355 <entry>
1356 <literal>dialout</literal>
1357 </entry>
1358 <entry>
1359 シリアルポート ("<literal>/dev/ttyS[0-3]</literal>")への全面的かつ直接のアクセス。
1360 </entry>
1361 </row>
1362 <row>
1363 <entry>
1364 <literal>dip</literal>
1365 </entry>
1366 <entry>
1367 信頼できるピアーに<emphasis
1368 role="strong">ダイヤルアップIP</emphasis>接続をするためのシリアルポートへの制限付きアクセス。
1369 </entry>
1370 </row>
1371 <row>
1372 <entry>
1373 <literal>cdrom</literal>
1374 </entry>
1375 <entry>
1376 CD-ROMやDVD+/-RWのドライバ。
1377 </entry>
1378 </row>
1379 <row>
1380 <entry>
1381 <literal>audio</literal>
1382 </entry>
1383 <entry>
1384 音声デバイス。
1385 </entry>
1386 </row>
1387 <row>
1388 <entry>
1389 <literal>video</literal>
1390 </entry>
1391 <entry>
1392 映像デバイス。
1393 </entry>
1394 </row>
1395 <row>
1396 <entry>
1397 <literal>scanner</literal>
1398 </entry>
1399 <entry>
1400 スキャナ。
1401 </entry>
1402 </row>
1403 <row>
1404 <entry>
1405 <literal>adm</literal>
1406 </entry>
1407 <entry>
1408 システムモニタのログ。
1409 </entry>
1410 </row>
1411 <row>
1412 <entry>
1413 <literal>staff</literal>
1414 </entry>
1415 <entry>
1416 下級管理業務のためのディレクトリ:"<literal>/usr/local</literal>"、"<literal>/home</literal>"。
1417 </entry>
1418 </row>
1419 </tbody>
1420 </tgroup>
1421 </table>
1422 <tip>
1423 <simpara>モデムの設定をしたりどこにでも電話したり等するには<literal>dialout</literal>グループに所属する必要があります。もし信頼できるピアーに関する事前定義された設定ファイル"<literal>/etc/ppp/peers/</literal>"が<literal>root</literal>によって作成されていると、<literal>dip</literal>グループに属するだけで<literal>pppd</literal>(8)や<literal>pon</literal>(1)や<literal>poff</literal>(1)コマンドを用いて<emphasis
1424 role="strong">ダイヤルアップIP</emphasis>接続が作成できます。</simpara>
1425 </tip>
1426 <simpara>いくつかのシステムが供給するグループはそのメンバーに<literal>root</literal>権限無しに特定のコマンドを実行することを可能にします。</simpara>
1427 <table id="listofnotablesysommandexecutions" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1428 <title>特定コマンド実行のためにシステムが供給する特記すべきグループのリスト。</title>
1429 <tgroup cols="2">
1430 <colspec colwidth="144" align="left"/>
1431 <colspec colwidth="360" align="left"/>
1432 <thead>
1433 <row>
1434 <entry>
1435 グループ
1436 </entry>
1437 <entry>
1438 実行可能なコマンド
1439 </entry>
1440 </row>
1441 </thead>
1442 <tbody>
1443 <row>
1444 <entry>
1445 <literal>sudo</literal>
1446 </entry>
1447 <entry>
1448 パスワード無しに<literal>sudo</literal>を実行。
1449 </entry>
1450 </row>
1451 <row>
1452 <entry>
1453 <literal>lpadmin</literal>
1454 </entry>
1455 <entry>
1456 プリンターのデータベースからプリンターを追加・変更・削除するコマンドの実行。
1457 </entry>
1458 </row>
1459 <row>
1460 <entry>
1461 <literal>plugdev</literal>
1462 </entry>
1463 <entry>
1464 USBメモリのような着脱可能なデバイスに関して<literal>pmount</literal>(1)を実行。
1465 </entry>
1466 </row>
1467 </tbody>
1468 </tgroup>
1469 </table>
1470 <simpara>システムが供給するユーザやグループの完全なリストは、<literal>base-passwd</literal>パッケージが供給する"<literal>/usr/share/doc/base-passwd/users-and-groups.html</literal>"の中にある最新バージョンの"Users
1471 and Groups"文書を参照ください。</simpara>
1472 <simpara>ユーザやグループシステムを管理するコマンドは<literal>passwd</literal>(5)や<literal>group</literal>(5)や<literal>shadow</literal>(5)や<literal>newgrp</literal>(1)や<literal>vipw</literal>(8)や<literal>vigr</literal>(8)や<literal>pam_group</literal>(8)を参照ください。</simpara>
1473 </section>
1474 <section id="_timestamps">
1475 <title>タイムスタンプ</title>
1476 <simpara>GNU/Linuxファイルのタイムスタンプには3種類あります。</simpara>
1477 <table id="listoftypesoftimestamps" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1478 <title>タイムスタンプのタイプのリスト。</title>
1479 <tgroup cols="2">
1480 <colspec colwidth="144" align="left"/>
1481 <colspec colwidth="360" align="left"/>
1482 <thead>
1483 <row>
1484 <entry>
1485 タイプ
1486 </entry>
1487 <entry>
1488 意味
1489 </entry>
1490 </row>
1491 </thead>
1492 <tbody>
1493 <row>
1494 <entry>
1495 <emphasis role="strong">mtime</emphasis>
1496 </entry>
1497 <entry>
1498 ファイル内容変更時間(<literal>ls -l</literal>)
1499 </entry>
1500 </row>
1501 <row>
1502 <entry>
1503 <emphasis role="strong">ctime</emphasis>
1504 </entry>
1505 <entry>
1506 ファイル状態変更時間(<literal>ls -lc</literal>)
1507 </entry>
1508 </row>
1509 <row>
1510 <entry>
1511 <emphasis role="strong">atime</emphasis>
1512 </entry>
1513 <entry>
1514 ファイル最終アクセス時間 (<literal>ls -lu</literal>)
1515 </entry>
1516 </row>
1517 </tbody>
1518 </tgroup>
1519 </table>
1520 <simpara><emphasis role="strong">ctime</emphasis>はファイル作成日時でないことに注意しましょう。</simpara>
1521 <itemizedlist>
1522 <listitem>
1523 <simpara>
1524 ファイルが上書きされると、ファイルの<emphasis role="strong">mtime</emphasis><emphasis
1525 role="strong">ctime</emphasis><emphasis
1526 role="strong">atime</emphasis>の属性すべてが変更されます。
1527 </simpara>
1528 </listitem>
1529 <listitem>
1530 <simpara>
1531 ファイルの所有者や許可の変更をすると、ファイルの<emphasis role="strong">ctime</emphasis><emphasis
1532 role="strong">atime</emphasis> アトリビュートを変えます。
1533 </simpara>
1534 </listitem>
1535 <listitem>
1536 <simpara>
1537 ファイルを読むとファイルの<emphasis
1538 role="strong">atime</emphasis>が変更されます。Debianシステム上のファイルを単に読むだけで<emphasis
1539 role="strong">inode</emphasis>中の<emphasis
1540 role="strong">atime</emphasis>情報を更新する書込みオペレーションが通常引き起こされることを覚えておいてください。ファイルシステムを"<literal>noatime</literal>"や"<literal>relatime</literal>"オプションを用いてマウントすることでシステムはこのようなオペレーションをしなくなるので、ファイルへの読みアクセスを高速化できます。ハードディスクの活動を抑えパワーの節約ができるのでこの様な設定はラップトップに推奨されます。<literal>mount</literal>(8)参照下さい。
1541 </simpara>
1542 </listitem>
1543 </itemizedlist>
1544 <simpara>既存ファイルのタイムスタンプを変更するには<literal>touch</literal>(1)コマンドを使ってください。</simpara>
1545 <simpara>タイムスタンプに関して、現代の英語ロケール("<literal>en_US.UTF-8</literal>")では古い英語ロケール("<literal>C</literal>")と違った文字列が<literal>ls</literal>コマンドから出力されます。</simpara>
1546 <screen>$ LANG=en_US.UTF-8 ls -l foo
1547 -rw-r--r-- 1 penguin penguin 3 2008-03-05 00:47 foo
1548 $ LANG=C ls -l foo
1549 -rw-r--r-- 1 penguin penguin 3 Mar 5 00:47 foo</screen>
1550 <tip>
1551 <simpara>"<literal>ls -l</literal>"の出力のカスタマイズは<xref
1552 linkend="_customized_display_of_time_and_date"/>参照下さい。</simpara>
1553 </tip>
1554 </section>
1555 <section id="_links">
1556 <title>リンク</title>
1557 <simpara>"<literal>foo</literal>"というファイルを異なるファイル名"<literal>bar</literal>"に結びつけるのには2つの方法があります。</simpara>
1558 <itemizedlist>
1559 <listitem>
1560 <simpara>
1561 <ulink url="&hardlink;">ハードリンク</ulink>は既存のファイルに対する重複した名前です(<literal>ln foo
1562 bar</literal>)。
1563 </simpara>
1564 </listitem>
1565 <listitem>
1566 <simpara>
1567 <ulink
1568 url="&symboliclink;">シンボリックリンク</ulink>または"シムリンク"は名前により他のファイルを指し示す特別なファイルです(<literal>ln
1569 -s foo bar</literal>)。
1570 </simpara>
1571 </listitem>
1572 </itemizedlist>
1573 <simpara>リンク数の変化と<literal>rm</literal>コマンドの結果の微妙な違いについての次の例をご覧ください。 </simpara>
1574 <screen>$ echo "Original Content" &gt; foo
1575 $ ls -li foo
1576 2398521 -rw-r--r-- 1 penguin penguin 17 2007-04-29 08:15 foo
1577 $ ln foo bar # hard link
1578 $ ln -s foo baz # symlink
1579 $ ls -li foo bar baz
1580 2398521 -rw-r--r-- 2 penguin penguin 17 2007-04-29 08:15 bar
1581 2398538 lrwxrwxrwx 1 penguin penguin 3 2007-04-29 08:16 baz -&gt; foo
1582 2398521 -rw-r--r-- 2 penguin penguin 17 2007-04-29 08:15 foo
1583 $ rm foo
1584 $ echo "New Content" &gt; foo
1585 $ ls -li foo bar baz
1586 2398521 -rw-r--r-- 1 penguin penguin 17 2007-04-29 08:15 bar
1587 2398538 lrwxrwxrwx 1 penguin penguin 3 2007-04-29 08:16 baz -&gt; foo
1588 2398540 -rw-r--r-- 1 penguin penguin 12 2007-04-29 08:17 foo
1589 $ cat bar
1590 Original Content
1591 $ cat baz
1592 New Content</screen>
1593 <simpara>ハードリンクは同一ファイルシステム内に作れ、<literal>ls</literal>(1)コマンドに"<literal>-i</literal>"オプションを使って表示されるinode番号が同じです。</simpara>
1594 <simpara>シンボリックリンクは上の例に示したように、常にファイルアクセスパーミッション"<literal>rwxrwxrwx</literal>"を持ちますので、シンボリックリンクが指すファイルのアクセスパーミッションが有効ファイルアクセスパーミッションとなります。</simpara>
1595 <caution>
1596 <simpara>もし特段の理由がないなら複雑なシンボリックリンクやハードリンクを作らない方が一般的には良いでしょう。シンボリックリンクの論理的組み合わせがファイルシステム中でループになっているという悪夢を引き起こすかもしれません。</simpara>
1597 </caution>
1598 <note>
1599 <simpara>もしハードリンクを使う特段の理由がなければ、ハードリンクよりシンボリックリンクを使う方が一般的には良いでしょう。</simpara>
1600 </note>
1601 <simpara>"<literal>.</literal>"ディレクトリは、それ自身が中にあるディレクトリとリンクしていますので、新しいディレクトリリンク数は2から始まります。"<literal>..</literal>"ディレクトリは親ディレクトリとリンクしているので、ディレクトリのリンク数は新しいサブディレクトリの増加に伴い増加します。</simpara>
1602 <simpara>もし最近あなたがWindowsからLinuxに移動してきたなら、Unixのファイル名のリンクはWindows上でもっとも似ている"shortcuts"との比較で如何にうまくできているかにすぐ気づくでしょう。ファイルシステム中に実装されているのでアプリケーションからはリンクされたファイルなのかオリジナルなのかの区別がつきません。ハードリンクの場合は実際全く違いはありません。</simpara>
1603 </section>
1604 <section id="_named_pipes_fifos">
1605 <title>名前付きパイプ(FIFO)</title>
1606 <simpara><ulink
1607 url="&namedpipe;">名前付きパイプ</ulink>は、パイプのように働くファイルです。何かをファイルに入れると、もう一方の端からそれが出てきます。こうしてこれはFIFOまたはFirst-In-First-Out(先入れ先出し)と呼ばれます。つまり、最初にパイプに入れられたものが最初にもう一方の端から出てきます。</simpara>
1608 <simpara>名前付きパイプに書き込んむ場合、パイプに書き込んむプロセスは情報がパイプから読み出されるまで終了しません。名前付きパイプから読み出す場合、読み出すプロセス何か読み込むものが無くなるまで終了するのを待ちます。パイプのサイズは常に
1609 0 です。 -- 名前付きパイプはデータを保存せず、
1610 シェルの"<literal>|</literal>"のように2つのプロセスをリンクするだけです。しかし、このパイプは名前を持つので、2つのプロセスは同じコマンドラインになくても良いし、同じユーザにより実行される必要さえありません。パイプはUnixの非常に影響力ある発明でした。</simpara>
1611 <simpara>次を実行して試してください:</simpara>
1612 <screen>$ cd; mkfifo mypipe
1613 $ echo "hello" &gt;mypipe &amp; # put into background
1614 [1] 8022
1615 $ ls -l mypipe
1616 prw-r--r-- 1 penguin penguin 0 2007-04-29 08:25 mypipe
1617 $ cat mypipe
1618 hello
1619 [1]+ Done echo "hello" &gt;mypipe
1620 $ ls mypipe
1621 mypipe
1622 $ rm mypipe</screen>
1623 </section>
1624 <section id="_sockets">
1625 <title>ソケット</title>
1626 <simpara>ソケットはインターネットのコミュニケーションやデータベースやオペレーティングシステム自身によって頻繁に使われます。ソケットは名前つきパイプ(FIFO)に似ており、異なるコンピュータ間でさえプロセス間の情報交換を可能にします。ソケットにとって、これらのプロセスは同時に実行する必要も、同じ祖先プロセスの子供である必要もありません。これは<ulink
1627 url="&theinterprocesscommunicationipc;">プロセス間通信(IPC)</ulink>の終端点です。ネットワーク越しで異なるホストの間で情報の交換をすることも可能です。2つの典型的なソケットは、<ulink
1628 url="&theinternetsocket;">インターネットソケット</ulink><ulink
1629 url="&theunixdomainsocket;">Unixドメインソケット</ulink>です。</simpara>
1630 <tip>
1631 <simpara>"<literal>netstat -an</literal>"を実行すると特定のシステム上のソケットの全般状況がよく分かります。</simpara>
1632 </tip>
1633 </section>
1634 <section id="_device_files">
1635 <title>デバイスファイル</title>
1636 <simpara><ulink
1637 url="&devicefiles;">デバイスファイル</ulink>は、システム上のハードディスク、ビデオカード、ディスプレイ、キーボードなどの物理デバイス又は仮想デバイス等を意味します。仮想デバイスの例として"<literal>/dev/console</literal>"として表されるコンソールがあります。</simpara>
1638 <table id="thedevicetypes" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1639 <title>デバイスのタイプ</title>
1640 <tgroup cols="2">
1641 <colspec colwidth="144" align="left"/>
1642 <colspec colwidth="360" align="left"/>
1643 <thead>
1644 <row>
1645 <entry>
1646 デバイスのタイプ
1647 </entry>
1648 <entry>
1649 意味
1650 </entry>
1651 </row>
1652 </thead>
1653 <tbody>
1654 <row>
1655 <entry>
1656 <emphasis role="strong">文字デバイス</emphasis>
1657 </entry>
1658 <entry>
1659 一度に1つの文字づつアクセスする、デバイスから書き込みや読み込みを行うデータの最小単位が文字(バイト)であるデバイスです。
1660 </entry>
1661 </row>
1662 <row>
1663 <entry>
1664 <emphasis role="strong">ブロックデバイス</emphasis>
1665 </entry>
1666 <entry>
1667 ブロックと呼ばれる複数の文字を含む比較的大きな大きな単位でアクセスされるデバイスです。ハードディスクはブロックデバイスです。
1668 </entry>
1669 </row>
1670 </tbody>
1671 </tgroup>
1672 </table>
1673 <simpara>デバイスファイルの読み書きが可能ですが、人間にとっては意味不明のバイナリデータがファイル中に多分含まれています。データを直接デバイスファイルに書き込むことは時々ハードウェアの接続に関するトラブルシュートに役立ちます。例えば、プリンタデバイス"<literal>/dev/lp0</literal>"にテキストファイルをダンプしたり、
1674 適切なシリアルポート"<literal>/dev/ttyS0</literal>"にモデムコマンドを送ることができます。しかし、注意深くやらないと、大災害をもたらすことがあります。くれぐれも気をつけてください。 </simpara>
1675 <note>
1676 <simpara>通常のプリンターへのアクセスは<literal>lp</literal>(1)を使いましょう。</simpara>
1677 </note>
1678 <simpara><literal>ls</literal>(1)を次のように実行するとデバイスノード番号が表示されます:</simpara>
1679 <screen>$ ls -l /dev/hda /dev/ttyS0 /dev/zero
1680 brw-rw---- 1 root cdrom 3, 0 2007-04-29 07:00 /dev/hda
1681 crw-rw---- 1 root dialout 4, 64 2007-04-29 07:00 /dev/ttyS0
1682 crw-rw-rw- 1 root root 1, 5 2007-04-29 07:00 /dev/zero</screen>
1683 <simpara>上記で:</simpara>
1684 <itemizedlist>
1685 <listitem>
1686 <simpara>
1687 "<literal>/dev/hda</literal>"はメジャーデバイス番号3とマイナーデバイス番号0を持ちます。これは<literal>disk</literal>グループに所属するユーザにより、読み書きアクセスが可能です。
1688 </simpara>
1689 </listitem>
1690 <listitem>
1691 <simpara>
1692 "<literal>/dev/ttyS0</literal>"
1693 はメジャーデバイス番号4とマイナーデバイス番号64を持ちます。これは<literal>dialout</literal>グループに所属するユーザにより、読み書きアクセスが可能です。
1694 </simpara>
1695 </listitem>
1696 <listitem>
1697 <simpara>
1698 "<literal>/dev/zero</literal>"
1699 はメジャーデバイス番号1とマイナーデバイス番号5を持ちます。これは誰によっても読み書きアクセスが可能です。
1700 </simpara>
1701 </listitem>
1702 </itemizedlist>
1703 <simpara>Linux
1704 2.6システムでは、"<literal>/dev/</literal>"の下のファイルは<literal>udev</literal>(7)メカニズムで自動的に生成されます。 </simpara>
1705 </section>
1706 <section id="_special_device_files">
1707 <title>特別なデバイスファイル</title>
1708 <simpara>いくつかの特別なデバイスファイルがあります。</simpara>
1709 <table id="listofspecialdevicefiles" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1710 <title>スペシャルなデバイスファイルのリスト。</title>
1711 <tgroup cols="3">
1712 <colspec colwidth="108" align="left"/>
1713 <colspec colwidth="108" align="left"/>
1714 <colspec colwidth="288" align="left"/>
1715 <thead>
1716 <row>
1717 <entry>
1718 デバイスファイル
1719 </entry>
1720 <entry>
1721 アクション
1722 </entry>
1723 <entry>
1724 レスポンス
1725 </entry>
1726 </row>
1727 </thead>
1728 <tbody>
1729 <row>
1730 <entry>
1731 <literal>/dev/null</literal>
1732 </entry>
1733 <entry>
1734 読み
1735 </entry>
1736 <entry>
1737 "行末(EOF)文字"を返します。
1738 </entry>
1739 </row>
1740 <row>
1741 <entry>
1742 <literal>/dev/null</literal>
1743 </entry>
1744 <entry>
1745 書き
1746 </entry>
1747 <entry>
1748 底なしのデータのゴミ捨て場です。
1749 </entry>
1750 </row>
1751 <row>
1752 <entry>
1753 <literal>/dev/zero</literal>
1754 </entry>
1755 <entry>
1756 読み
1757 </entry>
1758 <entry>
1759 "<literal>\0</literal> (NUL)文字"を返します(ASCIIの数字のゼロとは違います)。
1760 </entry>
1761 </row>
1762 <row>
1763 <entry>
1764 <literal>/dev/random</literal>
1765 </entry>
1766 <entry>
1767 読み
1768 </entry>
1769 <entry>
1770 真の乱数発生機から真のエントロピーのあるランダムな文字を返す。(遅い)
1771 </entry>
1772 </row>
1773 <row>
1774 <entry>
1775 <literal>/dev/urandom</literal>
1776 </entry>
1777 <entry>
1778 読み
1779 </entry>
1780 <entry>
1781 暗号学的にセキュアな擬似乱数発生機からランダムな文字を返す。
1782 </entry>
1783 </row>
1784 <row>
1785 <entry>
1786 <literal>/dev/full</literal>
1787 </entry>
1788 <entry>
1789 書き
1790 </entry>
1791 <entry>
1792 ディスクフル(ENOSPC)エラーを返す。
1793 </entry>
1794 </row>
1795 </tbody>
1796 </tgroup>
1797 </table>
1798 <simpara>以上はシェルのリディレクションとともによく使われます。(<xref
1799 linkend="_typical_command_sequences_and_shell_redirection"/>参照)。</simpara>
1800 </section>
1801 <section id="_procfs_and_sysfs">
1802 <title>procfsとsysfs</title>
1803 <simpara><ulink url="&procfs;">procfs</ulink><ulink
1804 url="&sysfs;">sysfs</ulink>は"<literal>/proc</literal>"や"<literal>/sys</literal>"上にマウントされる仮想ファイルシステムであり、カーネルの内部データ構造をユーザスペースにさらけ出します。言い換えると、オペレーティングシステムのオペレーションへの便利なのぞき窓となると言う意味で仮想といえます。</simpara>
1805 <simpara>"<literal>/proc</literal>"ディレクトリ中には、システム上で実行されている各プロセスに対応したそのプロセスID(PID)の名前がついたサブディレクトリ他があります。プロセス情報をアクセスする<literal>ps</literal>(1)のようなシステムユーティリティはこのディレクトリ構造からその情報を得ています。</simpara>
1806 <simpara>"<literal>/proc/sys/</literal>"の下のディレクトリには実行時のカーネル変数を変更するインターフェースがあります。(専用の<literal>sysctl</literal>(8)コマンドもしくはその起動/設定ファイル"<literal>/etc/sysctrl.conf</literal>"によっても同様のことができます。)</simpara>
1807 <note>
1808 <simpara>Linuxカーネルが"Too many open files"とエラーを出力することがあります。rootのシェルから、例えば"<literal>echo
1809 "65536" &gt;
1810 /proc/sys/fs/file-max</literal>"等と"<literal>file-max</literal>"の値をより大きな値に増加することで解決できます。(古いカーネルではこれが必要でした。)</simpara>
1811 </note>
1812 <simpara>特にあるファイル - "<literal>/proc/kcore</literal>" -
1813 に気づくと、パニックになる人がよくいます。これは一般に巨大です。これは(おおよそ)コンピュータのメモリの内容のコピーです。これは kernel
1814 をデバッグするのに用いられます。コンピュータのメモリを指す仮想ファイルなので、そのサイズに関して心配する必要は全くありません。</simpara>
1815 <simpara>"<literal>/sys</literal>"の下のディレクトリはカーネルから引き出されたデータ構造、その属性、それらの関連を含んでいます。一部カーネル変数を実行時に変更する機構もまた含まれたりします。</simpara>
1816 <simpara><literal>linux-doc-2.6.*</literal>パッケージで供給されるLinuxカーネル文書("<literal>/usr/share/doc/linux-doc-2.6.*/Documentation/filesystems/*</literal>")中の"<literal>proc.txt(.gz)</literal>"や"<literal>sysfs.txt(.gz)</literal>"や関連する他の文書を参照下さい。</simpara>
1817 </section>
1818 </section>
1819 <section id="_midnight_commander_mc">
1820 <title>ミッドナイトコマンダー(MC)</title>
1821 <simpara><ulink url="&midnightcommandermc;">Midnight Commander (MC)</ulink>はLinux
1822 コンソールや他の端末環境のためのGNU製"スイス軍ナイフ"です。標準Unixコマンドを習うよりもより簡単なメニューを使ったコンソール経験が初心者にもできます。</simpara>
1823 <simpara>"<literal>mc</literal>"と名づけられた Midnight Commanderパッケージをインストールする必要があります。</simpara>
1824 <screen>$ sudo aptitude install mc</screen>
1825 <simpara>Debian
1826 システムを探検するために<literal>mc</literal>(1)コマンドを使いましょう。これは学習するための最良の方法です。カーソルキーとエンターキーを使うだけでいくつかの主要な場所を探検してください。</simpara>
1827 <itemizedlist>
1828 <listitem>
1829 <simpara>
1830 "<literal>/etc</literal>"とサブディレクトリ。
1831 </simpara>
1832 </listitem>
1833 <listitem>
1834 <simpara>
1835 "<literal>/var/log</literal>"とサブディレクトリ。
1836 </simpara>
1837 </listitem>
1838 <listitem>
1839 <simpara>
1840 "<literal>/usr/share/doc</literal>"とサブディレクトリ。
1841 </simpara>
1842 </listitem>
1843 <listitem>
1844 <simpara>
1845 "<literal>/sbin</literal>"と"<literal>/bin</literal>"。
1846 </simpara>
1847 </listitem>
1848 </itemizedlist>
1849 <section id="_customization_of_mc">
1850 <title>MCのカスタム化</title>
1851 <simpara>終了時に作業ディレクトリをMCに変更させそのディレクトリへcdさせるためには、"<literal>~/.bashrc</literal>"を次を含むように変更しましょう:</simpara>
1852 <screen>. /usr/share/mc/bin/mc.sh</screen>
1853 <simpara>この理由は<literal>mc</literal>(1) ("<literal>-P</literal>"オプション項目)
1854 を参照下さい(今言っていることがよく分からないなら、これは後日しても大丈夫です。)</simpara>
1855 </section>
1856 <section id="_starting_mc">
1857 <title>MCの始動</title>
1858 <simpara>MCは次のようにして始動できます:</simpara>
1859 <screen>$ mc</screen>
1860 <simpara>MCを使うとメニューを通じた最小限のユーザの努力で全てのファイル操作の面倒が見られます。ヘルプ表示を出すには、ただF1を押すだけです。カーソルキーとファンクションキーの操作だけでMCを使えます。</simpara>
1861 <note>
1862 <simpara><literal>gnome-terminal</literal>(1)のようなコンソールでは、ファンクションキーのキーストロークがコンソールプログラムに横取りされる事があります。<literal>gnome-terminal</literal>の場合、"Edit"
1863 → "Keyboard Shortcuts"とするとこの機能を無効にできます。</simpara>
1864 </note>
1865 <simpara>もし文字化け表示がされる文字エンコーディング問題に出会った際には、MCのコマンドラインに"<literal>-a</literal>"を加えると解消する事があります。</simpara>
1866 <simpara>これでもMCの表示の問題が解消しない際には、<xref linkend="_the_terminal_configuration"/>を参照下さい。</simpara>
1867 </section>
1868 <section id="_file_manager_in_mc">
1869 <title>MCのファイルマネージャ</title>
1870 <simpara>2つのディレクトリパネルがありそれぞれファイルリストを含むのが標準です。他の便利なモードとしては、右側のウィンドウを"information"
1871 とセットしてファイルアクセス権情報などを表示するモードがあります。次にいくつかの不可欠なキーストロークを示します。<literal>gpm</literal>(8)デーモンを実行すると、Linuxの文字ターミナルでマウスも使えます。(MC
1872 で通常の挙動のカットアンドペーストをさせるには、shiftキーを押してください。) </simpara>
1873 <table id="thekeybindingsofmc" pgwide="0" frame="topbot" rowsep="1" colsep="1">
1874 <title>MCのキーバインディング</title>
1875 <tgroup cols="2">
1876 <colspec colwidth="144" align="left"/>
1877 <colspec colwidth="360" align="left"/>
1878 <thead>
1879 <row>
1880 <entry>
1881 キー
1882 </entry>
1883 <entry>
1884 キーバインディング
1885 </entry>
1886 </row>
1887 </thead>
1888 <tbody>
1889 <row>
1890 <entry>
1891 <literal>F1</literal>
1892 </entry>
1893 <entry>
1894 ヘルプメニュー
1895 </entry>
1896 </row>
1897 <row>
1898 <entry>
1899 <literal>F3</literal>
1900 </entry>
1901 <entry>
1902 内部ファイルビューア
1903 </entry>
1904 </row>
1905 <row>
1906 <entry>
1907 <literal>F4</literal>
1908 </entry>
1909 <entry>
1910 内部エディタ
1911 </entry>
1912 </row>
1913 <row>
1914 <entry>
1915 <literal>F9</literal>
1916 </entry>
1917 <entry>
1918 プルダウンメニューを有効にする
1919 </entry>
1920 </row>
1921 <row>
1922 <entry>
1923 <literal>F10</literal>
1924 </entry>
1925 <entry>
1926 MCを終了する
1927 </entry>
1928 </row>
1929 <row>
1930 <entry>
1931 <literal>Tab</literal>
1932 </entry>
1933 <entry>
1934 二つのウィンドウの間を移動する
1935 </entry>
1936 </row>
1937 <row>
1938 <entry><literal>Insert</literal>もしくは<literal>Ctrl-T</literal>
1939 </entry>
1940 <entry>
1941 コピーのような複数ファイル操作のため、ファイルにマークをする
1942 </entry>
1943 </row>
1944 <row>
1945 <entry>
1946 <literal>Del</literal>
1947 </entry>
1948 <entry>
1949 ファイルの削除 (気をつけましょう -- MCを安全削除モードに設定)
1950 </entry>
1951 </row>
1952 <row>
1953 <entry>
1954 カーソルキー
1955 </entry>
1956 <entry>
1957 自明
1958 </entry>
1959 </row>
1960 </tbody>
1961 </tgroup>
1962 </table>
1963 </section>
1964 <section id="_command_line_tricks_in_mc">
1965 <title>MC のコマンドライントリック</title>
1966 <itemizedlist>
1967 <listitem>
1968 <simpara>
1969 <literal>cd</literal>コマンドは選択されたスクリーンに表示されたディレクトリを変更します。
1970 </simpara>
1971 </listitem>
1972 <listitem>
1973 <simpara><literal>Ctrl-Enter</literal><literal>Alt-Enter</literal>はファイル名をコマンドラインにコピーします。コマンドライン編集と一緒に<literal>cp</literal>(1)や<literal>mv</literal>(1)コマンドで御使用ください。
1974 </simpara>
1975 </listitem>
1976 <listitem>
1977 <simpara><literal>Alt-Tab</literal>はシェルファイル名の自動展開の選択肢を表示します。
1978 </simpara>
1979 </listitem>
1980 <listitem>
1981 <simpara>
1982 MCの引数で両ウインドウの開始ディレクトリを指定できます。例えば"<literal>mc /etc /root</literal>"。
1983 </simpara>
1984 </listitem>
1985 <listitem>
1986 <simpara><literal>Esc</literal> + <literal>n-key</literal><literal>Fn</literal>
1987 (つまり、<literal>Esc</literal> + <literal>1</literal>
1988 <literal>F1</literal>、等々、<literal>Esc</literal> + <literal>0</literal>
1989 <literal>F10</literal>)
1990 </simpara>
1991 </listitem>
1992 <listitem>
1993 <simpara>
1994 <literal>Esc</literal>をキーの前に押すのは<literal>Alt</literal>をキーと同時に押すのと同様の効果があります。つまり、<literal>Esc</literal>
1995 + <literal>c</literal>
1996 <literal>Alt-C</literal>と同じです。<literal>Esc</literal>はメタキーとよばれ時々"<literal>M-</literal>"と表記されます。
1997 </simpara>
1998 </listitem>
1999 </itemizedlist>
2000 </section>
2001 <section id="_the_internal_editor_in_mc">
2002 <title>MCの内部エディタ</title>
2003 <simpara>MC
2004 の内部エディタは興味深いカットアンドペースト機構を持ちます。<literal>F3</literal>キーを押すと、選択範囲の開始としてマークし、次に<literal>F3</literal>を押すと、選択範囲の終了としてマークし、選択範囲を強調します。そしてカーソルを動かすことができます。F6を押すと、選択範囲はカーソルの位置に移動します。F5を押すと、選択範囲はコピーされ、カーソルの位置に挿入されます。<literal>F2</literal>を押すとファイルをセーブします。<literal>F10</literal>を押すと選択範囲はなくなります。ほとんどのカーソルキーは直感的に働きます。 </simpara>
2005 <simpara>このエディタは直接ファイルに関しても起動できます:</simpara>
2006 <screen>$ mc -e filename_to_edit
2007 $ mcedit filename_to_edit</screen>
2008 <simpara>これはマルチモードエディタではありませんが、複数の Linux コンソール上で使用すると同じ効果を発揮させされます。ウィンドウ間のコピーを行うには、
2009 Alt-&lt;n&gt;キーを押して仮想コンソールを切替えて、"File→Insert file"や"File→Copy to
2010 file"を用いてファイルの一部を他のファイルに動かします。</simpara>
2011 <simpara>この内部エディタはお好きな他の外部エディタと置き換えが可能です。</simpara>
2012 <simpara>また、多くのプログラムは使用するエディタを決定するために環境変数"<literal>$EDITOR</literal>"や"<literal>$VISUAL</literal>"を使用します。最初<literal>vim</literal>(1)や<literal>nano</literal>(1)が使いにくい場合には"<literal>~/.bashrc</literal>"に次に示す行を追加してエディタを"<literal>mcedit</literal>"に設定するのも一計です。</simpara>
2013 <screen>...
2014 export EDITOR=mcedit
2015 export VISUAL=mcedit
2016 ...</screen>
2017 <simpara>できればこれは"<literal>vim</literal>"に設定することを推奨します。</simpara>
2018 <simpara><literal>vim</literal>(1)が使いにくい場合には、<literal>mcedit</literal>(1)をほとんどのシステム管理業務のために使い続けられます。</simpara>
2019 </section>
2020 <section id="_the_internal_viewer_in_mc">
2021 <title>MCの内部ビューア</title>
2022 <simpara>非常に小さなビューアです。文書内の単語を検索するための素晴らしいツールです。私は"<literal>/usr/share/doc</literal>"ディレクトリ内のファイルに対していつもこれを使います。これは
2023 大量にあるLinux情報を閲覧するための最速の方法です。このビューアはこのように直接起動できます。</simpara>
2024 <screen>$ mc -v path/to/filename_to_view
2025 $ mcview path/to/filename_to_view</screen>
2026 </section>
2027 <section id="_auto_start_features_of_mc">
2028 <title>MCの自動起動機能</title>
2029 <simpara>ファイルの上でEnterを押すと、適切なプログラムがファイル内容を処理します(<xref
2030 linkend="_customizing_program_to_be_started"/>参照)。これは非常に便利な MC の機能です。</simpara>
2031 <table id="thereactiontotheenterkeyinmc" pgwide="0" frame="topbot" rowsep="1" colsep="1">
2032 <title>キー入力へのMCの反応</title>
2033 <tgroup cols="2">
2034 <colspec colwidth="144" align="left"/>
2035 <colspec colwidth="360" align="left"/>
2036 <thead>
2037 <row>
2038 <entry>
2039 ファイルタイプ
2040 </entry>
2041 <entry>
2042 enterキーへの反応
2043 </entry>
2044 </row>
2045 </thead>
2046 <tbody>
2047 <row>
2048 <entry>
2049 実行ファイル
2050 </entry>
2051 <entry>
2052 コマンド実行
2053 </entry>
2054 </row>
2055 <row>
2056 <entry>
2057 manファイル
2058 </entry>
2059 <entry>
2060 ビューアソフトに内容をパイプする
2061 </entry>
2062 </row>
2063 <row>
2064 <entry>
2065 htmlファイル
2066 </entry>
2067 <entry>
2068 ウエッブブラウザに内容をパイプする
2069 </entry>
2070 </row>
2071 <row>
2072 <entry>
2073 "<literal>*.tar.gz</literal>"や"<literal>*.deb</literal>"ファイル
2074 </entry>
2075 <entry>
2076 サブディレクトリであるかのように内容を表示
2077 </entry>
2078 </row>
2079 </tbody>
2080 </tgroup>
2081 </table>
2082 <simpara>これらのビューアや仮想ファイルの機能を有効にするためには、閲覧可能なファイルには実行可能と設定されていてはいけません。<literal>chmod</literal>(1)コマンドを使うか、MC
2083 のファイルメニュー経由で状態を変更してください。</simpara>
2084 </section>
2085 <section id="_ftp_virtual_filesystem_of_mc">
2086 <title>MCのFTP仮想ファイルシステム</title>
2087 <simpara>MCをInternet越しでのFTPを用いたファイルアクセスに使えます。<literal>F9</literal>を押してメニューに行き、"<literal>p</literal>"を押してFTP仮想ファイルシステムを有効にします。"<literal>username:passwd@hostname.domainname</literal>"の形式でURLを入力すると、あたかもローカルにあるかのようにリモートディレクトリを取得します。</simpara>
2088 <simpara>"[http.us.debian.org/debian]"をURLとしてDebianアーカイブを閲覧しましょう。</simpara>
2089 </section>
2090 </section>
2091 <section id="_the_basic_unix_like_work_environment">
2092 <title>基本のUnix的作業環境</title>
2093 <simpara>MCはほとんど全てのことを可能にしますが、シェルプロンプトから実行されるコマンドラインツールの使用方法について学び、Unix的な作業環境に親しむのは非常に重要なことです。</simpara>
2094 <section id="_the_login_shell">
2095 <title>loginシェル</title>
2096 <simpara>ログインシェルは<literal>chsh</literal>(1)を使えば選択できます。</simpara>
2097 <table id="list-of-shell-programs" pgwide="0" frame="topbot" rowsep="1" colsep="1">
2098 <title>シェルプログラムのリスト。</title>
2099 <tgroup cols="5">
2100 <colspec colwidth="72" align="left"/>
2101 <colspec colwidth="72" align="left"/>
2102 <colspec colwidth="72" align="left"/>
2103 <colspec colwidth="72" align="left"/>
2104 <colspec colwidth="216" align="left"/>
2105 <thead>
2106 <row>
2107 <entry>
2108 パッケージ
2109 </entry>
2110 <entry>
2111 popcon
2112 </entry>
2113 <entry>
2114 サイズ
2115 </entry>
2116 <entry>
2117 POSIXシェル
2118 </entry>
2119 <entry>
2120 説明
2121 </entry>
2122 </row>
2123 </thead>
2124 <tbody>
2125 <row>
2126 <entry><ulink url="http://packages.debian.org/sid/bash"> <literal>bash</literal>
2127 </ulink></entry>
2128 <entry><ulink url="http://bugs.debian.org/bash">&pop-bash;</ulink></entry>
2129 <entry><ulink url="http://packages.qa.debian.org/b/bash.html">&size-bash;</ulink></entry>
2130 <entry>
2131 はい
2132 </entry>
2133 <entry><ulink url="&bash;">Bash</ulink>:GNU Bourne Again SHell(事実上の標準シェル)
2134 </entry>
2135 </row>
2136 <row>
2137 <entry><ulink url="http://packages.debian.org/sid/tcsh"> <literal>tcsh</literal>
2138 </ulink></entry>
2139 <entry><ulink url="http://bugs.debian.org/tcsh">&pop-tcsh;</ulink></entry>
2140 <entry><ulink url="http://packages.qa.debian.org/t/tcsh.html">&size-tcsh;</ulink></entry>
2141 <entry>
2142 いいえ
2143 </entry>
2144 <entry><ulink url="&tenexcshell;">TENEX C Shell</ulink>:拡張バージョンの<ulink
2145 url="&berkeleycsh;">Berkeley csh</ulink>
2146 </entry>
2147 </row>
2148 <row>
2149 <entry><ulink url="http://packages.debian.org/sid/dash"> <literal>dash</literal>
2150 </ulink></entry>
2151 <entry><ulink url="http://bugs.debian.org/dash">&pop-dash;</ulink></entry>
2152 <entry><ulink url="http://packages.qa.debian.org/d/dash.html">&size-dash;</ulink></entry>
2153 <entry>
2154 はい
2155 </entry>
2156 <entry>
2157 Debianの<ulink url="&almquistshell;">Almquistシェル</ulink>。シェルスクリプトに好適。
2158 </entry>
2159 </row>
2160 <row>
2161 <entry><ulink url="http://packages.debian.org/sid/zsh"> <literal>zsh</literal>
2162 </ulink></entry>
2163 <entry><ulink url="http://bugs.debian.org/zsh">&pop-zsh;</ulink></entry>
2164 <entry><ulink url="http://packages.qa.debian.org/z/zsh.html">&size-zsh;</ulink></entry>
2165 <entry>
2166 はい
2167 </entry>
2168 <entry><ulink url="&zshell;">Z shell</ulink>:多くの拡張された標準シェル。
2169 </entry>
2170 </row>
2171 <row>
2172 <entry><ulink url="http://packages.debian.org/sid/pdksh"> <literal>pdksh</literal>
2173 </ulink></entry>
2174 <entry><ulink url="http://bugs.debian.org/pdksh">&pop-pdksh;</ulink></entry>
2175 <entry><ulink url="http://packages.qa.debian.org/p/pdksh.html">&size-pdksh;</ulink></entry>
2176 <entry>
2177 はい
2178 </entry>
2179 <entry>
2180 A public domain version of the <ulink url="&kornshell;">Kornシェル</ulink>.
2181 </entry>
2182 </row>
2183 <row>
2184 <entry><ulink url="http://packages.debian.org/sid/csh"> <literal>csh</literal>
2185 </ulink></entry>
2186 <entry><ulink url="http://bugs.debian.org/csh">&pop-csh;</ulink></entry>
2187 <entry><ulink url="http://packages.qa.debian.org/c/csh.html">&size-csh;</ulink></entry>
2188 <entry>
2189 いいえ
2190 </entry>
2191 <entry><ulink url="&openbsd;">OpenBSD</ulink>のCシェル、<ulink
2192 url="&berkeleycsh;">Berkeley csh</ulink>の1バージョン。
2193 </entry>
2194 </row>
2195 <row>
2196 <entry><ulink url="http://packages.debian.org/sid/sash"> <literal>sash</literal>
2197 </ulink></entry>
2198 <entry><ulink url="http://bugs.debian.org/sash">&pop-sash;</ulink></entry>
2199 <entry><ulink url="http://packages.qa.debian.org/s/sash.html">&size-sash;</ulink></entry>
2200 <entry>
2201 はい
2202 </entry>
2203 <entry>組み込みコマンド付きの<ulink
2204 url="&standaloneshell;">独立シェル</ulink>。(標準の"<literal>/bin/sh</literal>"には向きません。)
2205 </entry>
2206 </row>
2207 <row>
2208 <entry><ulink url="http://packages.debian.org/sid/ksh"> <literal>ksh</literal>
2209 </ulink></entry>
2210 <entry><ulink url="http://bugs.debian.org/ksh">&pop-ksh;</ulink></entry>
2211 <entry><ulink url="http://packages.qa.debian.org/k/ksh.html">&size-ksh;</ulink></entry>
2212 <entry>
2213 はい
2214 </entry>
2215 <entry>
2216 真のAT&amp;Tバージョンの<ulink url="&kornshell;">Kornシェル</ulink>
2217 </entry>
2218 </row>
2219 <row>
2220 <entry><ulink url="http://packages.debian.org/sid/rc"> <literal>rc</literal>
2221 </ulink></entry>
2222 <entry><ulink url="http://bugs.debian.org/rc">&pop-rc;</ulink></entry>
2223 <entry><ulink url="http://packages.qa.debian.org/r/rc.html">&size-rc;</ulink></entry>
2224 <entry>
2225 いいえ
2226 </entry>
2227 <entry>
2228 <ulink url="&attplanj;">AT&amp;T Plan 9</ulink><ulink
2229 url="&rcshell;">rcシェル</ulink>の実装。
2230 </entry>
2231 </row>
2232 <row>
2233 <entry><ulink url="http://packages.debian.org/sid/posh"> <literal>posh</literal>
2234 </ulink></entry>
2235 <entry><ulink url="http://bugs.debian.org/posh">&pop-posh;</ulink></entry>
2236 <entry><ulink url="http://packages.qa.debian.org/p/posh.html">&size-posh;</ulink></entry>
2237 <entry>
2238 はい
2239 </entry>
2240 <entry>
2241 ポリシー準拠の通常シェル。<literal>pdksh</literal>の派生。
2242 </entry>
2243 </row>
2244 </tbody>
2245 </tgroup>
2246 </table>
2247 <simpara>このチュートリアル章内では、インタラクティブなシェルは常に<literal>bash</literal>です。</simpara>
2248 </section>
2249 <section id="_customizing_bash">
2250 <title>Bashのカスタム化</title>
2251 <simpara><literal>bash</literal>(1)の動作は"<literal>~/.bashrc</literal>"でカスタマイズできます。例えば次を"<literal>~/.bashrc</literal>"に加えます:</simpara>
2252 <screen># CD upon exiting MC
2253 . /usr/share/mc/bin/mc.sh
2254
2255 # set CDPATH to good one
2256 CDPATH=.:/usr/share/doc:~/Desktop/src:~/Desktop:~
2257 export CDPATH
2258
2259 PATH="${PATH}":/usr/sbin:/sbin
2260 # set PATH so it includes user's private bin if it exists
2261 if [ -d ~/bin ] ; then
2262 PATH=~/bin:"${PATH}"
2263 fi
2264 export PATH
2265
2266 EDITOR=vim
2267 export EDITOR</screen>
2268 <tip>
2269 <simpara><literal>bash</literal>に関する更なるカスタマイズ方法は、<xref
2270 linkend="_system_tips"/>中の<xref linkend="_colorized_commands"/>等にあります。</simpara>
2271 </tip>
2272 </section>
2273 <section id="_special_key_strokes">
2274 <title>特別のキーストローク</title>
2275 <simpara><ulink
2276 url="&unixlike;">Unix的</ulink>環境下では、特別の意味を持ったいくつかのキーストロークがあります。通常のLinuxの文字ターミナルでは左側の<literal>Ctrl</literal><literal>Alt</literal>キーのみが期待にそって機能することに配慮下さい。次に特記すべき暗記するべきキーストロークを記します。</simpara>
2277 <table id="listofkeybindingsforbash" pgwide="0" frame="topbot" rowsep="1" colsep="1">
2278 <title>Bashのキーバインディングのリスト。</title>
2279 <tgroup cols="2">
2280 <colspec colwidth="144" align="left"/>
2281 <colspec colwidth="360" align="left"/>
2282 <thead>
2283 <row>
2284 <entry>
2285 キー
2286 </entry>
2287 <entry>
2288 キーバインディング
2289 </entry>
2290 </row>
2291 </thead>
2292 <tbody>
2293 <row>
2294 <entry>
2295 <literal>Ctrl-U</literal>
2296 </entry>
2297 <entry>
2298 カーソルの前の1行を消去する。
2299 </entry>
2300 </row>
2301 <row>
2302 <entry>
2303 <literal>Ctrl-H</literal>
2304 </entry>
2305 <entry>
2306 カーソルの前の1文字を削除する。
2307 </entry>
2308 </row>
2309 <row>
2310 <entry>
2311 <literal>Ctrl-D</literal>
2312 </entry>
2313 <entry>
2314 入力を終了する。(シェルを使用中の場合、シェルを終了する)
2315 </entry>
2316 </row>
2317 <row>
2318 <entry>
2319 <literal>Ctrl-C</literal>
2320 </entry>
2321 <entry>
2322 実行中のプログラムを終了する。
2323 </entry>
2324 </row>
2325 <row>
2326 <entry>
2327 <literal>Ctrl-Z</literal>
2328 </entry>
2329 <entry>
2330 一時的にプログラムをバックグラウンドジョブに入れ停止する。
2331 </entry>
2332 </row>
2333 <row>
2334 <entry>
2335 <literal>Ctrl-S</literal>
2336 </entry>
2337 <entry>
2338 スクリーンへの出力を停止する。
2339 </entry>
2340 </row>
2341 <row>
2342 <entry>
2343 <literal>Ctrl-Q</literal>
2344 </entry>
2345 <entry>
2346 スクリーンへの出力を再開する。
2347 </entry>
2348 </row>
2349 <row>
2350 <entry>
2351 <literal>Ctrl-Alt-Del</literal>
2352 </entry>
2353 <entry>
2354 システムをリブート/停止する、<literal>inittab</literal>(5)参照下さい。
2355 </entry>
2356 </row>
2357 <row>
2358 <entry><literal>Left-Altキー</literal> (もしくは、<literal>Windowsキー</literal>)
2359 </entry>
2360 <entry>
2361 Emacsおよび同様のUIでのメタキー
2362 </entry>
2363 </row>
2364 <row>
2365 <entry>
2366 <literal>Up-arrow</literal>
2367 </entry>
2368 <entry>
2369 <literal>bash</literal>でコマンド履歴の検索開始。
2370 </entry>
2371 </row>
2372 <row>
2373 <entry>
2374 <literal>Ctrl-R</literal>
2375 </entry>
2376 <entry>
2377 <literal>bash</literal>でインクリメンタルなコマンド履歴検索の開始。
2378 </entry>
2379 </row>
2380 <row>
2381 <entry>
2382 <literal>Tab</literal>
2383 </entry>
2384 <entry>
2385 <literal>bash</literal>のコマンドラインでファイル名の入力を完結する。
2386 </entry>
2387 </row>
2388 <row>
2389 <entry>
2390 <literal>Ctrl-V</literal> <literal>Tab</literal>
2391 </entry>
2392 <entry>
2393 <literal>bash</literal>のコマンドラインで<literal>Tab</literal>を展開することなく入力する。
2394 </entry>
2395 </row>
2396 </tbody>
2397 </tgroup>
2398 </table>
2399 <tip>
2400 <simpara>ターミナルの<literal>Ctrl-S</literal>機能は<literal>stty</literal>(1)で無効にできます。</simpara>
2401 </tip>
2402 </section>
2403 <section id="_unix_style_mouse_operations">
2404 <title>Unix流のマウス操作</title>
2405 <simpara>Unix流のマウス操作は3ボタンマウスが基本です。</simpara>
2406 <table id="listofunixstylemouseoperations" pgwide="0" frame="topbot" rowsep="1" colsep="1">
2407 <title>Unix流のマウス操作のリスト</title>
2408 <tgroup cols="2">
2409 <colspec colwidth="144" align="left"/>
2410 <colspec colwidth="360" align="left"/>
2411 <thead>
2412 <row>
2413 <entry>
2414 アクション
2415 </entry>
2416 <entry>
2417 レスポンス
2418 </entry>
2419 </row>
2420 </thead>
2421 <tbody>
2422 <row>
2423 <entry>
2424 マウスの左クリックアンドドラッグ
2425 </entry>
2426 <entry>
2427 選択とクリップボードへのコピー。
2428 </entry>
2429 </row>
2430 <row>
2431 <entry>
2432 左クリック
2433 </entry>
2434 <entry>
2435 選択開始点の選択。
2436 </entry>
2437 </row>
2438 <row>
2439 <entry>
2440 右クリック
2441 </entry>
2442 <entry>
2443 選択終了点の選択とクリップボードへのコピー。
2444 </entry>
2445 </row>
2446 <row>
2447 <entry>
2448 中クリック
2449 </entry>
2450 <entry>
2451 クリップボードをカーソル位置に挿入。
2452 </entry>
2453 </row>
2454 </tbody>
2455 </tgroup>
2456 </table>
2457 <simpara>最近のホイールマウスの真ん中のホイールは中マウスボタンと見なされ、中クリックに使えます。2ボタンマウス状況では左右のボタンの同時押しが中クリックとして使えます。Linuxの文字コンソールでマウスを使うには<literal>gpm</literal>(8)をデーモンで実行する必要があります。</simpara>
2458 </section>
2459 <section id="_the_pager">
2460 <title>ページャ</title>
2461 <simpara><literal>less</literal>(1)は機能拡張されたページャ(ファイル内容のブラウザ)です。"<literal>h</literal>"
2462 と入力するとヘルプが表示されます。これは、<literal>more</literal>(1) よりもはるかに機能があり、"<literal>eval
2463 $(lesspipe)</literal>"または"<literal>eval
2464 $(lessfile)</literal>"とシェルの開始スクリプト中で実行することで更に機能拡充されます。詳しくは、"<literal>/usr/share/doc/lessf/LESSOPEN</literal>"を参照下さい。"<literal>-R</literal>"オプションを用いると生の
2465 option allows
2466 raw文字出力が許可され、ANSIカラーエスケープシーケンスが有効になります。<literal>less</literal>(1)参照下さい。</simpara>
2467 </section>
2468 <section id="_the_text_editor">
2469 <title>テキストエディタ</title>
2470 <simpara>Unix的システムで人気のある、<ulink url="&vim;">Vim</ulink><ulink
2471 url="&emacs;">Emacs</ulink>プログラムのいずれかのバリアントに習熟するべきです。</simpara>
2472 <simpara>著者としてはVimコマンドに慣れることは正しいことだと考えています。なぜならViエディタはLinux/Unixの世界では必ず存在するからです。(実際はオリジナルの<literal>vi</literal>か、新しい<literal>nvi</literal>がどこででも見つけられるプログラムです。これにもかかわらずVimを著者が初心者のために選んだのは、より強力かつ動作が充分似ているのと、<literal>F1</literal>キーを通じてヘルプが表示されるからです。)</simpara>
2473 <simpara>これとは違い、<ulink url="&emacs;">Emacs</ulink><ulink
2474 url="&xemacs;">XEmacs</ulink>をエディタとして選ぶのも、特にプログラムをするには、非常に良い選択です。Emacsには、ニュースリーダ機能、ディレクトリの編集機能、メール機能他の、過多な機能があります。プログラミングやシェルスクリプトの編集に使うときは、作業中のフォーマットをインテリジェントに認識し助力をしようとします。Linux上で必要なプログラムはEmacsだけと考える人もいます。Emacsを今10分間学ぶことは将来何時間もの節約になります。Emacsを学ぶ際にはGNUのEmacsマニュアルを持っておくことを高く推薦します。</simpara>
2475 <simpara>これら全てのプログラムには練習しながら学べるようにチュータリングプログラムが普通付いてきます。Vimを"<literal>vim</literal>"とタイプして起動し、F1キーを押しましょう。最初の35行を読みましょう。カーソルを"<literal>|tutor|</literal>"に移動し<literal>Ctrl-]</literal>を押してオンラインの訓練コースを始めましょう。</simpara>
2476 <note>
2477 <simpara>VimやEmacsのような良いエディタは、正しいフォント設定がされたUTF-8ロケールの下の正しいオプションを使ったx-terminal-emulatorを使うと、UTF-8や他のエギゾチックなエンコーディングのテキストを正しく扱えます。マルチバイトテキストに関するそれぞれの文書を参照下さい。</simpara>
2478 </note>
2479 </section>
2480 <section id="_setting_a_default_text_editor">
2481 <title>デフォルトのテキストエディタの設定</title>
2482 <simpara>Debianにはいくつかの異なったエディタがあります。上述のように<literal>vim</literal>パッケージをインストールすることを推薦します。</simpara>
2483 <simpara>Debianではシステムのデフォルトのエディタへの統一されたアクセスを"<literal>/usr/bin/editor</literal>"コマンドを通じて提供しているので、他のプログラム(例えば<literal>reportbug</literal>(1)等)が起動できます。設定変更は:</simpara>
2484 <screen>$ sudo update-alternatives --config editor</screen>
2485 <simpara>著者が"<literal>/usr/bin/vim.tiny</literal>"より"<literal>/usr/bin/vim.basic</literal>"を初心者に推薦するのはシンタクスハイライトをサポートしているからです。</simpara>
2486 <tip>
2487 <simpara>多くのプログラムは"<literal>$EDITOR</literal>"か"<literal>$VISUAL</literal>"という環境変数を使ってどのエディタを使うかを決めます(<xref
2488 linkend="_the_internal_editor_in_mc"/><xref
2489 linkend="_customizing_program_to_be_started"/>参照)。Debianシステムの整合性のために、これらを"<literal>/usr/bin/editor</literal>"と設定しましょう。(歴史的には"<literal>$EDITOR</literal>"は"<literal>ed</literal>"で、"<literal>$VISUAL</literal>"は"<literal>vi</literal>"でした。)</simpara>
2490 </tip>
2491 </section>
2492 <section id="_customizing_vim">
2493 <title>Vimのカスタム化</title>
2494 <simpara><literal>vim</literal>(1)の挙動は"<literal>~/.vimrc</literal>"を使ってカスタマイズできます。例えば著者は次を使ってます:</simpara>
2495 <screen>" -------------------------------
2496 " Local configuration
2497 "
2498 set nocompatible
2499 set nopaste
2500 set pastetoggle=&lt;f2&gt;
2501 syn on
2502 if $USER == "root"
2503 set nomodeline
2504 set noswapfile
2505 else
2506 set modeline
2507 set swapfile
2508 endif
2509 " filler to avoid the line above being recognized as a modeline
2510 " filler
2511 " filler</screen>
2512 </section>
2513 <section id="_recording_the_shell_activities">
2514 <title>シェル活動の記録</title>
2515 <simpara>シェルコマンドの出力はスクリーンから押し出されると永久に無くなってしまうかもしれません。シェルでの活動を後で見直せるようにファイルに記録しておくのは良いことです。この種の記録は何らかのシステム管理作業をする際には非常に重要です。</simpara>
2516 <simpara>シェル活動の記録の基本方法は<literal>script</literal>(1)の下で実行することです。</simpara>
2517 <screen>$ script
2518 Script started, file is typescript</screen>
2519 <itemizedlist>
2520 <listitem>
2521 <simpara>
2522 何らかのシェルコマンドの実行 …
2523 </simpara>
2524 </listitem>
2525 <listitem>
2526 <simpara>
2527 <literal>Ctrl-D</literal>を押して<literal>script</literal>から脱出。
2528 </simpara>
2529 </listitem>
2530 </itemizedlist>
2531 <screen>$ vim typescript</screen>
2532 <simpara><xref linkend="_recording_the_shell_activities_cleanly"/>参照下さい。</simpara>
2533 </section>
2534 <section id="_basic_unix_commands">
2535 <title>基本Unixコマンド</title>
2536 <simpara>基本的Unixコマンドを学びましょう。ここでは一般的意味で"Unix"を使っています。いかなるUnixクローンのOSも等価なコマンドを提供します。Debianシステムも例外ではありません。今一部コマンドが思うように機能しなくても心配しないで下さい。<literal>エアリアス</literal>がシェルで使われた場合は、対応するコマンドの出力は変わります。次は順番に実行すると言う意味の例ではありません。</simpara>
2537 <simpara>非特権ユーザのアカウントから次のコマンドを全て実行しましょう:</simpara>
2538 <table id="listofbasicunixcommands" pgwide="0" frame="topbot" rowsep="1" colsep="1">
2539 <title>基本のUnixコマンドのリスト。</title>
2540 <tgroup cols="2">
2541 <colspec colwidth="144" align="left"/>
2542 <colspec colwidth="360" align="left"/>
2543 <thead>
2544 <row>
2545 <entry>
2546 コマンド
2547 </entry>
2548 <entry>
2549 説明
2550 </entry>
2551 </row>
2552 </thead>
2553 <tbody>
2554 <row>
2555 <entry>
2556 <literal>pwd</literal>
2557 </entry>
2558 <entry>
2559 カレント/ワーキングディレクトリの名前を表示。
2560 </entry>
2561 </row>
2562 <row>
2563 <entry>
2564 <literal>whoami</literal>
2565 </entry>
2566 <entry>
2567 現在のユーザ名を表示。
2568 </entry>
2569 </row>
2570 <row>
2571 <entry>
2572 <literal>id</literal>
2573 </entry>
2574 <entry>
2575 現在のユーザのアイデンティティ(名前とuidとgidと関連するgroup)。
2576 </entry>
2577 </row>
2578 <row>
2579 <entry>
2580 <literal>file &lt;foo&gt;</literal>
2581 </entry>
2582 <entry>
2583 "<literal>&lt;foo&gt;</literal>"ファイルのファイルタイプを表示する。
2584 </entry>
2585 </row>
2586 <row>
2587 <entry>
2588 <literal>type -p &lt;commandname&gt;</literal>
2589 </entry>
2590 <entry>
2591 "<literal>&lt;commandname&gt;</literal>"コマンドのファイルの位置を表示する。
2592 </entry>
2593 </row>
2594 <row>
2595 <entry>
2596 <literal>which &lt;commandname&gt;</literal>
2597 </entry>
2598 <entry>
2599 , ,
2600 </entry>
2601 </row>
2602 <row>
2603 <entry>
2604 <literal>type &lt;commandname&gt;</literal>
2605 </entry>
2606 <entry>
2607 "<literal>&lt;commandname&gt;</literal>"コマンドに関する情報を表示する。
2608 </entry>
2609 </row>
2610 <row>
2611 <entry>
2612 <literal>apropos &lt;key-word&gt;</literal>
2613 </entry>
2614 <entry>
2615 "<literal>&lt;key-word&gt;</literal>"に関連したコマンドを見つける。
2616 </entry>
2617 </row>
2618 <row>
2619 <entry>
2620 <literal>man -k &lt;key-word&gt;</literal>
2621 </entry>
2622 <entry>
2623 , ,
2624 </entry>
2625 </row>
2626 <row>
2627 <entry>
2628 <literal>whatis &lt;commandname&gt;</literal>
2629 </entry>
2630 <entry>
2631 "<literal>&lt;commandname&gt;</literal>"コマンドに関する1行の説明を表示する。
2632 </entry>
2633 </row>
2634 <row>
2635 <entry>
2636 <literal>man -a &lt;commandname&gt;</literal>
2637 </entry>
2638 <entry>
2639 "<literal>&lt;commandname&gt;</literal>"コマンドに関する説明を表示する。(Unixスタイル)
2640 </entry>
2641 </row>
2642 <row>
2643 <entry>
2644 <literal>info &lt;commandname&gt;</literal>
2645 </entry>
2646 <entry>
2647 "<literal>&lt;commandname&gt;</literal>"コマンドに関する比較的長い説明を表示する。(GNUスタイル)
2648 </entry>
2649 </row>
2650 <row>
2651 <entry>
2652 <literal>ls</literal>
2653 </entry>
2654 <entry>
2655 ディレクトリの内容をリストする。(非ドットファイルおよびディレクトリ)
2656 </entry>
2657 </row>
2658 <row>
2659 <entry>
2660 <literal>ls -a</literal>
2661 </entry>
2662 <entry>
2663 ディレクトリの内容をリストする。(全ファイルおよびディレクトリ)
2664 </entry>
2665 </row>
2666 <row>
2667 <entry>
2668 <literal>ls -A</literal>
2669 </entry>
2670 <entry>
2671 ディレクトリの内容をリストする。(ほとんど全ファイルおよびディレクトリ、"<literal>..</literal>"と"<literal>.</literal>"をスキップ)
2672 </entry>
2673 </row>
2674 <row>
2675 <entry>
2676 <literal>ls -la</literal>
2677 </entry>
2678 <entry>
2679 ディレクトリの内容を詳細情報とともにリストする。
2680 </entry>
2681 </row>
2682 <row>
2683 <entry>
2684 <literal>ls -lai</literal>
2685 </entry>
2686 <entry>
2687 ディレクトリの内容をinode番号と詳細情報とともにリストする。
2688 </entry>
2689 </row>
2690 <row>
2691 <entry>
2692 <literal>ls -d</literal>
2693 </entry>
2694 <entry>
2695 現ディレクトリの中の全ディレクトリをリストする。
2696 </entry>
2697 </row>
2698 <row>
2699 <entry>
2700 <literal>tree</literal>
2701 </entry>
2702 <entry>
2703 ファイルツリーの内容を表示する。
2704 </entry>
2705 </row>
2706 <row>
2707 <entry>
2708 <literal>lsof &lt;foo&gt;</literal>
2709 </entry>
2710 <entry>
2711 "<literal>&lt;foo&gt;</literal>"ファイルのオープンの状態をリスト。
2712 </entry>
2713 </row>
2714 <row>
2715 <entry>
2716 <literal>lsof -p &lt;pid&gt;</literal>
2717 </entry>
2718 <entry>
2719 プロセスID: "<literal>&lt;pid&gt;</literal>"によってオープンされたファイルをリストする。
2720 </entry>
2721 </row>
2722 <row>
2723 <entry>
2724 <literal>mkdir &lt;foo&gt;</literal>
2725 </entry>
2726 <entry>
2727 現ディレクトリ中に"<literal>&lt;foo&gt;</literal>"という新規ディレクトリを作る。
2728 </entry>
2729 </row>
2730 <row>
2731 <entry>
2732 <literal>rmdir &lt;foo&gt;</literal>
2733 </entry>
2734 <entry>
2735 現ディレクトリ中の"<literal>&lt;foo&gt;</literal>"というディレクトリを削除する。
2736 </entry>
2737 </row>
2738 <row>
2739 <entry>
2740 <literal>cd &lt;foo&gt;</literal>
2741 </entry>
2742 <entry>
2743 現ディレクトリ中もしくは"<literal>$CDPATH</literal>"変数中にリストされたディレクトリ中の"<literal>&lt;foo&gt;</literal>"というディレクトリにディレクトリを変更する。
2744 </entry>
2745 </row>
2746 <row>
2747 <entry>
2748 <literal>cd /</literal>
2749 </entry>
2750 <entry>
2751 ディレクトリをrootディレクトリに変更する。
2752 </entry>
2753 </row>
2754 <row>
2755 <entry>
2756 <literal>cd</literal>
2757 </entry>
2758 <entry>
2759 現在のユーザのホームディレクトリにディレクトリを変更する。
2760 </entry>
2761 </row>
2762 <row>
2763 <entry>
2764 <literal>cd /&lt;foo&gt;</literal>
2765 </entry>
2766 <entry>
2767 絶対ディレクトリパス"<literal>/&lt;foo&gt;</literal>"にディレクトリを変更する。
2768 </entry>
2769 </row>
2770 <row>
2771 <entry>
2772 <literal>cd ..</literal>
2773 </entry>
2774 <entry>
2775 親ディレクトリにディレクトリを変更する。
2776 </entry>
2777 </row>
2778 <row>
2779 <entry>
2780 <literal>cd ~&lt;foo&gt;</literal>
2781 </entry>
2782 <entry>
2783 ユーザ"<literal>&lt;foo&gt;</literal>"のホームディレクトリにディレクトリを変更する。
2784 </entry>
2785 </row>
2786 <row>
2787 <entry>
2788 <literal>cd -</literal>
2789 </entry>
2790 <entry>
2791 一つ前のディレクトリにディレクトリを変更する。
2792 </entry>
2793 </row>
2794 <row>
2795 <entry>
2796 <literal>&lt;/etc/motd pager</literal>
2797 </entry>
2798 <entry>
2799 "<literal>/etc/motd</literal>"の内容をデフォルトのページャで表示する。
2800 </entry>
2801 </row>
2802 <row>
2803 <entry>
2804 <literal>touch &lt;junkfile&gt;</literal>
2805 </entry>
2806 <entry>
2807 空ファイル"<literal>&lt;junkfile&gt;</literal>"を作成する。
2808 </entry>
2809 </row>
2810 <row>
2811 <entry>
2812 <literal>cp &lt;foo&gt; &lt;bar&gt;</literal>
2813 </entry>
2814 <entry>
2815 既存のファイル"<literal>&lt;foo&gt;</literal>"を新規ファイル"<literal>&lt;bar&gt;</literal>"にコピーする。
2816 </entry>
2817 </row>
2818 <row>
2819 <entry>
2820 <literal>rm &lt;junkfile&gt;</literal>
2821 </entry>
2822 <entry>
2823 ファイル"<literal>&lt;junkfile&gt;</literal>"を削除する。
2824 </entry>
2825 </row>
2826 <row>
2827 <entry>
2828 <literal>mv &lt;foo&gt; &lt;bar&gt;</literal>
2829 </entry>
2830 <entry>
2831 既存のファイル"<literal>&lt;foo&gt;</literal>"の名前を新しい名前"<literal>&lt;bar&gt;</literal>"に変更する。ディレクトリ"<literal>&lt;bar&gt;</literal>"が存在してはいけません。
2832 </entry>
2833 </row>
2834 <row>
2835 <entry>
2836 <literal>mv &lt;foo&gt; &lt;bar&gt;</literal>
2837 </entry>
2838 <entry>
2839 既存のファイル"<literal>&lt;foo&gt;</literal>"を新しい場所"<literal>&lt;bar&gt;/&lt;foo&gt;</literal>"に移動する。ディレクトリ"<literal>&lt;bar&gt;</literal>"が存在しなければいけない。
2840 </entry>
2841 </row>
2842 <row>
2843 <entry>
2844 <literal>mv &lt;foo&gt; &lt;bar&gt;/&lt;baz&gt;</literal>
2845 </entry>
2846 <entry>
2847 既存のファイル"<literal>&lt;foo&gt;</literal>"を新しい場所の新しい名前のファイル"<literal>&lt;bar&gt;/&lt;baz&gt;</literal>"に移動する。ディレクトリ"<literal>&lt;bar&gt;</literal>"が存在しなければいけないが、ディレクトリ"<literal>&lt;bar&gt;/&lt;baz&gt;</literal>"は存在してはいけない。
2848 </entry>
2849 </row>
2850 <row>
2851 <entry>
2852 <literal>chmod 600 &lt;foo&gt;</literal>
2853 </entry>
2854 <entry>
2855 既存のファイル"<literal>&lt;foo&gt;</literal>"を他の人から読みも書きもできないようにする。(全ての人にとって実行不可)
2856 </entry>
2857 </row>
2858 <row>
2859 <entry>
2860 <literal>chmod 644 &lt;foo&gt;</literal>
2861 </entry>
2862 <entry>
2863 既存のファイル"<literal>&lt;foo&gt;</literal>"を他の人からは読めるが書けるようにする。(全ての人にとって実行不可)
2864 </entry>
2865 </row>
2866 <row>
2867 <entry>
2868 <literal>chmod 755 &lt;foo&gt;</literal>
2869 </entry>
2870 <entry>
2871 既存のファイル"<literal>&lt;foo&gt;</literal>"を他の人からは読めるが書けるようにする。(全ての人にとって実行可能)
2872 </entry>
2873 </row>
2874 <row>
2875 <entry>
2876 <literal>find . -name &lt;pattern&gt;</literal>
2877 </entry>
2878 <entry>
2879 シェルで"<literal>&lt;pattern&gt;</literal>"にマッチするファイル名を探す。(比較的遅い)
2880 </entry>
2881 </row>
2882 <row>
2883 <entry>
2884 <literal>locate -d . &lt;pattern&gt;</literal>
2885 </entry>
2886 <entry>
2887 シェルで"<literal>&lt;pattern&gt;</literal>"にマッチするファイル名を探す。(定期的に生成されるデータベースを使い比較的早い)
2888 </entry>
2889 </row>
2890 <row>
2891 <entry>
2892 <literal>grep -e "&lt;pattern&gt;" *.html</literal>
2893 </entry>
2894 <entry>
2895 現ディレクトリにある"<literal>.html</literal>"で終わる全ファイルから"&lt;pattern&gt;"のパターンを検索し、該当する全ファイルを表示する。
2896 </entry>
2897 </row>
2898 <row>
2899 <entry>
2900 <literal>top</literal>
2901 </entry>
2902 <entry>
2903 フルスクリーンを用いてプロセス情報を表示する。"<literal>q</literal>"を押して終了する。
2904 </entry>
2905 </row>
2906 <row>
2907 <entry>
2908 <literal>ps aux | pager</literal>
2909 </entry>
2910 <entry>
2911 起動中の全プロセスの情報をBSDスタイルの出力を用いて表示する。
2912 </entry>
2913 </row>
2914 <row>
2915 <entry>
2916 <literal>ps -ef | pager</literal>
2917 </entry>
2918 <entry>
2919 起動中の全プロセスの情報をSystem-Vスタイルの出力を用いて表示。
2920 </entry>
2921 </row>
2922 <row>
2923 <entry>
2924 <literal>ps aux | grep -e "[e]xim4*"</literal>
2925 </entry>
2926 <entry>
2927 "<literal>exim</literal>"もしくは"<literal>exim4</literal>"の起動中の全プロセスを表示。
2928 </entry>
2929 </row>
2930 <row>
2931 <entry>
2932 <literal>ps axf | pager</literal>
2933 </entry>
2934 <entry>
2935 起動中の全プロセスの情報をASCIIアート出力を用いて表示。
2936 </entry>
2937 </row>
2938 <row>
2939 <entry>
2940 <literal>kill &lt;1234&gt;</literal>
2941 </entry>
2942 <entry>
2943 プロセスID"&lt;1234&gt;"により識別されるプロセスを殺す。
2944 </entry>
2945 </row>
2946 <row>
2947 <entry>
2948 <literal>gzip &lt;foo&gt;</literal>
2949 </entry>
2950 <entry>
2951 Lempel-Zivコーディング(LZ77)を用いて"<literal>&lt;foo&gt;</literal>"を圧縮し"<literal>&lt;foo&gt;.gz</literal>"を作成する。
2952 </entry>
2953 </row>
2954 <row>
2955 <entry>
2956 <literal>gunzip &lt;foo&gt;.gz</literal>
2957 </entry>
2958 <entry>
2959 "<literal>&lt;foo&gt;.gz</literal>"を解凍して"<literal>&lt;foo&gt;</literal>"を作成する。
2960 </entry>
2961 </row>
2962 <row>
2963 <entry>
2964 <literal>bzip2 &lt;foo&gt;</literal>
2965 </entry>
2966 <entry>
2967 Burrows-Wheelerブロックソートテキスト圧縮アルゴリズムとHuffmanコーディングを用いて"<literal>&lt;foo&gt;</literal>"を圧縮し"<literal>&lt;foo&gt;.bz2</literal>"を作成する。(gzipより高圧縮率)
2968 </entry>
2969 </row>
2970 <row>
2971 <entry>
2972 <literal>bunzip2 &lt;foo&gt;.bz2</literal>
2973 </entry>
2974 <entry>
2975 "<literal>&lt;foo&gt;.bz2</literal>"を解凍して"<literal>&lt;foo&gt;</literal>"を作成する。
2976 </entry>
2977 </row>
2978 <row>
2979 <entry>
2980 <literal>tar -xvf &lt;foo&gt;.tar</literal>
2981 </entry>
2982 <entry>
2983 "<literal>&lt;foo&gt;.tar</literal>"アーカイブからファイルを展開する。
2984 </entry>
2985 </row>
2986 <row>
2987 <entry>
2988 <literal>tar -xvzf &lt;foo&gt;.tar.gz</literal>
2989 </entry>
2990 <entry>
2991 gzip圧縮された"<literal>&lt;foo&gt;.tar.gz</literal>"アーカイブからファイルを展開する。
2992 </entry>
2993 </row>
2994 <row>
2995 <entry>
2996 <literal>tar -xvf -j &lt;foo&gt;.tar.bz2</literal>
2997 </entry>
2998 <entry>
2999 "<literal>&lt;foo&gt;.tar.bz2</literal>"アーカイブからファイルを展開する。
3000 </entry>
3001 </row>
3002 <row>
3003 <entry>
3004 <literal>tar -cvf &lt;foo&gt;.tar &lt;bar&gt;/</literal>
3005 </entry>
3006 <entry>
3007 フォルダ"<literal>&lt;bar&gt;/</literal>"の内容を"<literal>&lt;foo&gt;.tar</literal>"アーカイブにアーカイブする。
3008 </entry>
3009 </row>
3010 <row>
3011 <entry>
3012 <literal>tar -cvzf &lt;foo&gt;.tar.gz &lt;bar&gt;/</literal>
3013 </entry>
3014 <entry>
3015 フォルダ"<literal>&lt;bar&gt;/</literal>"の内容を"<literal>&lt;foo&gt;.tar.gz</literal>"アーカイブに圧縮アーカイブする。
3016 </entry>
3017 </row>
3018 <row>
3019 <entry>
3020 <literal>tar -cvjf &lt;foo&gt;.tar.bz2 &lt;bar&gt;/</literal>
3021 </entry>
3022 <entry>
3023 フォルダ"<literal>&lt;bar&gt;/</literal>"の内容を"<literal>&lt;foo&gt;.tar.bz2</literal>"アーカイブに圧縮アーカイブする。
3024 </entry>
3025 </row>
3026 <row>
3027 <entry>
3028 <literal>zcat README.gz | pager</literal>
3029 </entry>
3030 <entry>
3031 標準のページャを用いて圧縮された"<literal>README.gz</literal>"の内容を表示する。
3032 </entry>
3033 </row>
3034 <row>
3035 <entry>
3036 <literal>zcat README.gz &gt; foo</literal>
3037 </entry>
3038 <entry>
3039 "<literal>README.gz</literal>"の内容を解凍してファイル"<literal>foo</literal>"を作成する。
3040 </entry>
3041 </row>
3042 <row>
3043 <entry>
3044 <literal>zcat README.gz &gt;&gt; foo</literal>
3045 </entry>
3046 <entry>
3047 圧縮された
3048 "<literal>README.gz</literal>"の内容をファイル"<literal>foo</literal>"の末尾に追加する。(ファイルが存在しない場合は事前に作成される。)
3049 </entry>
3050 </row>
3051 </tbody>
3052 </tgroup>
3053 </table>
3054 <note>
3055 <simpara>Unixは"<literal>.</literal>"で始まるファイル名を隠す伝統があります。それらは伝統的には特定の設定情報やユーザの嗜好を含むファイルです。</simpara>
3056 </note>
3057 <note>
3058 <simpara><literal>cd</literal>コマンドに関しては<literal>builtins</literal>(7)を参照下さい。</simpara>
3059 </note>
3060 <note>
3061 <simpara>最小限のDebianシステムのデフォルトのページャは<literal>more</literal>(1)で、スクロールバックができません。<literal>less</literal>パッケージを"<literal>aptitude
3062 install less</literal>"と言うコマンドラインでインストールすると、<literal>less</literal>(1)が
3063 デフォルトのページャになりカーソルキーでスクロールバック出来るようになります。</simpara>
3064 </note>
3065 <note>
3066 <simpara>上記の"<literal>ps aux | grep -e
3067 "[e]xim4*"</literal>"コマンド中に現れる正規表現中の"<literal>[</literal>"と"<literal>]</literal>"は<literal>grep</literal>が自分自身にマッチするのを避けることを可能とします。正規表現中の"<literal>4*</literal>"は数字"<literal>4</literal>"の0回以上の繰り返しを意味するので、<literal>grep</literal>が"<literal>exim</literal>"と"<literal>exim4</literal>"の両方にマッチすることが可能になります。
3068 "<literal>*</literal>"はシェルのファイルネームのグロブでも正規表現ででも使われますが、これらの意味は異なります。<literal>grep</literal>(1)から正規表現を学びましょう。</simpara>
3069 </note>
3070 <simpara>上記のコマンドを訓練として用いて、ディレクトリを渡り歩き、システムの中を覗き込んでください。コンソールのコマンドに関して質問がある場合は、必ずマニュアルページを読んでみてください。例えば、これらのコマンドは良い開始点でしょう:</simpara>
3071 <screen>$ man man
3072 $ man bash
3073 $ man builtins
3074 $ man grep
3075 $ man ls</screen>
3076 <simpara>マンページのスタイルは慣れるのに少々大変かもしれません。なぜなら特に比較的古い非常に伝統的なマンページは比較的言葉が少ないからです。しかし一旦慣れるとその簡潔さの良さが分かります。</simpara>
3077 <simpara>GNUやBSD由来を含む多くのUnix的なコマンドは次のように起動すると簡単なヘルプ情報を表示します。(場合によっては一切の引数無しで):</simpara>
3078 <screen>$ &lt;コマンド名&gt; --help
3079 $ &lt;コマンド名&gt; -h</screen>
3080 </section>
3081 </section>
3082 <section id="_the_simple_shell_command">
3083 <title>シェルプロンプト</title>
3084 <simpara>Debianシステムの使い方が少し分かったでしょう。Debianシステム上でのコマンド実行のメカニズムを掘り下げましょう。初心者のためにちょっと簡略化してみました。正確な説明は<literal>bash</literal>(1)を参照下さい。</simpara>
3085 <simpara>シンプルなコマンドは、次のシーケンスとなります:</simpara>
3086 <orderedlist>
3087 <listitem>
3088 <simpara>
3089 変数代入(任意)
3090 </simpara>
3091 </listitem>
3092 <listitem>
3093 <simpara>
3094 コマンド名
3095 </simpara>
3096 </listitem>
3097 <listitem>
3098 <simpara>
3099 引数(任意)
3100 </simpara>
3101 </listitem>
3102 <listitem>
3103 <simpara>
3104 リダイレクト(任意:<literal>&gt;</literal><literal>&gt;&gt;</literal><literal>&lt;</literal><literal>&lt;&lt;</literal>等。)
3105 </simpara>
3106 </listitem>
3107 <listitem>
3108 <simpara>
3109 制御演算子(任意:<literal>&amp;&amp;</literal><literal>||</literal>&lt;改行&gt;<literal>;</literal><literal>&amp;</literal><literal>(</literal><literal>)</literal>)
3110 </simpara>
3111 </listitem>
3112 </orderedlist>
3113 <section id="_command_execution_and_environment_variable">
3114 <title>コマンド実行と環境変数</title>
3115 <simpara><ulink url="&environmentvariables;">環境変数</ulink>の値はUnixコマンドの挙動を変えます。</simpara>
3116 <simpara>環境変数のデフォルト値はPAMシステムが初期設定されます。その後次のような何らかのアプリケーションプログラムにより再設定されているかもしれません。</simpara>
3117 <itemizedlist>
3118 <listitem>
3119 <simpara>
3120 <literal>gdm</literal>のようなディスプレイマネージャによって再設定される。
3121 </simpara>
3122 </listitem>
3123 <listitem>
3124 <simpara>
3125 "<literal>~/bash_profile</literal>"や"<literal>~/.bashrc</literal>"にあるシェル起動コードの中でシェルにより再設定される。
3126 </simpara>
3127 </listitem>
3128 </itemizedlist>
3129 <section id="_lang_variable">
3130 <title>"$LANG"変数</title>
3131 <simpara>"<literal>$LANG</literal>"変数に与えられる完全なロケール値は3つの部分からなります:"<literal>xx_YY.ZZZZ</literal>"。</simpara>
3132 <table id="dpartsoflocalevalue" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3133 <title>ロケールの値の3つの部分</title>
3134 <tgroup cols="2">
3135 <colspec colwidth="144" align="left"/>
3136 <colspec colwidth="360" align="left"/>
3137 <thead>
3138 <row>
3139 <entry>
3140 ロケールの値
3141 </entry>
3142 <entry>
3143 意味
3144 </entry>
3145 </row>
3146 </thead>
3147 <tbody>
3148 <row>
3149 <entry>
3150 <literal>xx</literal>
3151 </entry>
3152 <entry>
3153 <ulink url="&isogdjlanguagecoowercasesuchasen;">ISO
3154 639言語コード(小文字)、例えば"en"</ulink>
3155 </entry>
3156 </row>
3157 <row>
3158 <entry>
3159 <literal>YY</literal>
3160 </entry>
3161 <entry>
3162 <ulink url="&isodbggcountrycoppercasesuchasus;">ISO
3163 3166国コード(大文字)、例えば"US"</ulink>
3164 </entry>
3165 </row>
3166 <row>
3167 <entry>
3168 <literal>ZZZZ</literal>
3169 </entry>
3170 <entry>
3171 <ulink url="&codesetalwayssettoutfi;">コードセット、常に"UTF-8"と設定</ulink>
3172 </entry>
3173 </row>
3174 </tbody>
3175 </tgroup>
3176 </table>
3177 <simpara>言語コードと国コードは"<literal>info gettext</literal>"中の該当記述を参照下さい。</simpara>
3178 <simpara>最近のDebianシステム上では、十分な理由と必要な知見をもって歴史的なコードセットを特段希望しない限り、常にコードセットを<emphasis
3179 role="strong"><literal>UTF-8</literal></emphasis>と設定すべきです。</simpara>
3180 <simpara>ロケールの詳細に関しては、<xref linkend="_the_locale"/>を参照下さい。</simpara>
3181 <note>
3182 <simpara>"<literal>LANG=en_US</literal>"は、"<literal>LANG=C</literal>"でも、"<literal>LANG=en_US.UTF-8</literal>"でもありません。それは"<literal>LANG=en_US.ISO-8859-1</literal>"です(<xref
3183 linkend="_basics_of_encoding"/>参照)。</simpara>
3184 </note>
3185 <table id="listoflocalerecommendations" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3186 <title>推奨ロケールのリスト。</title>
3187 <tgroup cols="2">
3188 <colspec colwidth="144" align="left"/>
3189 <colspec colwidth="360" align="left"/>
3190 <thead>
3191 <row>
3192 <entry>
3193 言語(地域)
3194 </entry>
3195 <entry>
3196 推奨ロケール
3197 </entry>
3198 </row>
3199 </thead>
3200 <tbody>
3201 <row>
3202 <entry>
3203 英語(米国)
3204 </entry>
3205 <entry>
3206 <literal>en_US.UTF-8</literal>
3207 </entry>
3208 </row>
3209 <row>
3210 <entry>
3211 英語(英国)
3212 </entry>
3213 <entry>
3214 <literal>en_GB.UTF-8</literal>
3215 </entry>
3216 </row>
3217 <row>
3218 <entry>
3219 フランス語(フランス)
3220 </entry>
3221 <entry>
3222 <literal>fr_FR.UTF-8</literal>
3223 </entry>
3224 </row>
3225 <row>
3226 <entry>
3227 ドイツ語(ドイツ)
3228 </entry>
3229 <entry>
3230 <literal>de_DE.UTF-8</literal>
3231 </entry>
3232 </row>
3233 <row>
3234 <entry>
3235 イタリア語(イタリア)
3236 </entry>
3237 <entry>
3238 <literal>it_IT.UTF-8</literal>
3239 </entry>
3240 </row>
3241 <row>
3242 <entry>
3243 スペイン語(スペイン)
3244 </entry>
3245 <entry>
3246 <literal>es_ES.UTF-8</literal>
3247 </entry>
3248 </row>
3249 <row>
3250 <entry>
3251 カタラン語(スペイン)
3252 </entry>
3253 <entry>
3254 <literal>ca_ES.UTF-8</literal>
3255 </entry>
3256 </row>
3257 <row>
3258 <entry>
3259 スウェーデン語(スウェーデン)
3260 </entry>
3261 <entry>
3262 <literal>sv_SE.UTF-8</literal>
3263 </entry>
3264 </row>
3265 <row>
3266 <entry>
3267 ポルトガル語(ブラジル)
3268 </entry>
3269 <entry>
3270 <literal>pt_BR.UTF-8</literal>
3271 </entry>
3272 </row>
3273 <row>
3274 <entry>
3275 ロシア語(ロシア)
3276 </entry>
3277 <entry>
3278 <literal>ru_RU.UTF-8</literal>
3279 </entry>
3280 </row>
3281 <row>
3282 <entry>
3283 中国語(中華人民共和国)
3284 </entry>
3285 <entry>
3286 <literal>zh_CN.UTF-8</literal>
3287 </entry>
3288 </row>
3289 <row>
3290 <entry>
3291 中国語(台湾_R.O.C.)
3292 </entry>
3293 <entry>
3294 <literal>zh_TW.UTF-8</literal>
3295 </entry>
3296 </row>
3297 <row>
3298 <entry>
3299 日本語(日本)
3300 </entry>
3301 <entry>
3302 <literal>ja_JP.UTF-8</literal>
3303 </entry>
3304 </row>
3305 <row>
3306 <entry>
3307 韓国語(大韓民国)
3308 </entry>
3309 <entry>
3310 <literal>ko_KR.UTF-8</literal>
3311 </entry>
3312 </row>
3313 <row>
3314 <entry>
3315 ベトナム語(ベトナム)
3316 </entry>
3317 <entry>
3318 <literal>vi_VN.UTF-8</literal>
3319 </entry>
3320 </row>
3321 </tbody>
3322 </tgroup>
3323 </table>
3324 <simpara>典型的なコマンドの実行は次のようなシェル行のシーケンスを用います:</simpara>
3325 <screen>$ date
3326 Sun Jun 3 10:27:39 JST 2007
3327 $ LANG=fr_FR.UTF-8 date
3328 dimanche 3 juin 2007, 10:27:33 (UTC+0900)</screen>
3329 <simpara>以上で、<literal>date</literal>(1)プログラムはフォアグラウンドのジョブとして実行されます。環境変数"<literal>$LANG</literal>"は:</simpara>
3330 <itemizedlist>
3331 <listitem>
3332 <simpara>
3333 最初のコマンドに関しては、システムのデフォルト<ulink
3334 url="&locale;">ロケール</ulink>(設定次第ですがここでは"<literal>en_US.UTF-8</literal>")に設定されています。
3335 </simpara>
3336 </listitem>
3337 <listitem>
3338 <simpara>
3339 2番目のコマンドに関しては、"<literal>fr_FR.UTF-8</literal>"(システム上に存在すればフランス語のUTF-8<ulink
3340 url="&locale;">ロケール</ulink>)に設定されています。
3341 </simpara>
3342 </listitem>
3343 </itemizedlist>
3344 <simpara>ほとんどのコマンド実行は頭に環境変数定義をつけないのが普通です。上記の例の代わりに次のように実行します:</simpara>
3345 <screen>$ LANG=fr_FR.UTF-8
3346 $ date
3347 dimanche 3 juin 2007, 10:27:33 (UTC+0900)</screen>
3348 <simpara>ここで確認できるように、コマンドの出力は環境変数に影響されフランス語の出力となっています。もし環境変数を(例えばシェルスクリプトを呼んでいて)サブプロセスに引き継ぎたい際には、次のように環境変数を"export"(エクスポート)しなければいけません。</simpara>
3349 <screen>$ export LANG</screen>
3350 <tip>
3351 <simpara>バグ報告をする際には、非英語環境を使っているなら、プログラムを"<literal>LANG=en_US.UTF-8</literal>"の下で実行し確認することが望ましいです。</simpara>
3352 </tip>
3353 <simpara>"<literal>$LANG</literal>"とこれに関連した環境変数に関しては、<literal>locale</literal>(5)と<literal>locale</literal>(7)を参照下さい。</simpara>
3354 <note>
3355 <simpara>特段必要がなければ"<literal>$LC_*</literal>"変数を避けて、"<literal>$LANG</literal>"変数のみを用いてシステム環境設定する事をお薦めします。</simpara>
3356 </note>
3357 </section>
3358 <section id="_path_variable">
3359 <title>"$PATH"変数</title>
3360 <simpara>シェルにコマンドを打ち込んだ際に、シェルは"<literal>$PATH</literal>"環境変数にリストされたディレクトリのリストから検索します。"<literal>$PATH</literal>"環境変数の値は、シェルの検索パスとも呼ばれます。</simpara>
3361 <simpara>標準のDebianインストールでは、ユーザアカウントの"<literal>$PATH</literal>"環境変数には"<literal>/sbin</literal>"や"<literal>/usr/sbin</literal>"が含まれないかもしれません。例えば、<literal>ifconfig</literal>コマンドは"<literal>/sbin/ifconfig</literal>"とフルパスを使って実行する必要があります。(類似の<literal>ip</literal>コマンドは"<literal>/bin</literal>"にあります。)</simpara>
3362 <simpara>Bashシェルの"<literal>$PATH</literal>"環境変数は、"<literal>~/.bash_profile</literal>"か"<literal>~/.bashrc</literal>"ファイルで変更できます。</simpara>
3363 </section>
3364 <section id="_home_variable">
3365 <title>"$HOME"変数</title>
3366 <simpara>多くのコマンドはユーザ特定の設定をホームディレクトリに保存し、その内容でコマンドの挙動が変わります。ホームディレクトリは"<literal>$HOME</literal>"環境変数で指定されます:</simpara>
3367 <table id="listofhomevalues" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3368 <title>"<literal>$HOME</literal>"の値のリスト。</title>
3369 <tgroup cols="2">
3370 <colspec colwidth="144" align="left"/>
3371 <colspec colwidth="360" align="left"/>
3372 <thead>
3373 <row>
3374 <entry>
3375 プログラム実行状況
3376 </entry>
3377 <entry>
3378 "<literal>$HOME</literal>"の値
3379 </entry>
3380 </row>
3381 </thead>
3382 <tbody>
3383 <row>
3384 <entry>
3385 initプロセスが実行するプログラム(デーモン)
3386 </entry>
3387 <entry>
3388 <literal>/</literal>
3389 </entry>
3390 </row>
3391 <row>
3392 <entry>
3393 通常のrootシェルから実行されるプログラム
3394 </entry>
3395 <entry>
3396 <literal>/root</literal>
3397 </entry>
3398 </row>
3399 <row>
3400 <entry>
3401 通常のユーザシェルから実行されるプログラム
3402 </entry>
3403 <entry>
3404 <literal>/home/&lt;normal_user&gt;</literal>
3405 </entry>
3406 </row>
3407 <row>
3408 <entry>
3409 通常のユーザのGUIデスクトップメニューから実行されるプログラム
3410 </entry>
3411 <entry>
3412 <literal>/home/&lt;normal_user&gt;</literal>
3413 </entry>
3414 </row>
3415 <row>
3416 <entry>
3417 "<literal>sudo program</literal>"を用いてrootとして実行されるプログラム
3418 </entry>
3419 <entry>
3420 <literal>/home/&lt;normal_user&gt;</literal>
3421 </entry>
3422 </row>
3423 <row>
3424 <entry>
3425 "<literal>sudo -H program</literal>"を用いてrootとして実行されるプログラム
3426 </entry>
3427 <entry>
3428 <literal>/root</literal>
3429 </entry>
3430 </row>
3431 </tbody>
3432 </tgroup>
3433 </table>
3434 <tip>
3435 <simpara>シェルは、"<literal>~/</literal>"を現ユーザのホームディレクトリである"<literal>$HOME/</literal>"へと展開します。シェルは、"<literal>~foo/</literal>"をユーザ<literal>foo</literal>のホームディレクトリである"<literal>/home/foo/</literal>"へと展開します。</simpara>
3436 </tip>
3437 </section>
3438 </section>
3439 <section id="_command_line_options">
3440 <title>コマンドラインオプション</title>
3441 <simpara>プログラムコマンドによっては引数があります。引数は"<literal>-</literal>"か"<literal>--</literal>"で始まり、オプションと呼ばれ、コマンドの挙動をコントロールします。</simpara>
3442 <screen>$ date
3443 Mon Oct 27 23:02:09 CET 2003
3444 $ date -R
3445 Mon, 27 Oct 2003 23:02:40 +0100</screen>
3446 <simpara>上記で、コマンドライン引数"<literal>-R</literal>"が<literal>date</literal>(1)の挙動を<ulink
3447 url="&rfccicc;">RFC2822</ulink>準拠の日付文字列出力と変えています。</simpara>
3448 </section>
3449 <section id="_shell_glob">
3450 <title>シェルグロブ</title>
3451 <simpara>ファイル名を全てタイプせずにファイルのグループをコマンド処理したいことがよくあります。シェルの<emphasis
3452 role="strong">グロブ</emphasis>(<emphasis
3453 role="strong">ワイルドカード</emphasis>とも時々呼ばれる)を用いたファイル名のパターン展開を用いるとこのニーズに答えられます。</simpara>
3454 <table id="shellglobpatterns" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3455 <title>シェルグロブパターン</title>
3456 <tgroup cols="2">
3457 <colspec colwidth="144" align="left"/>
3458 <colspec colwidth="360" align="left"/>
3459 <thead>
3460 <row>
3461 <entry>
3462 シェルグロブパターン
3463 </entry>
3464 <entry>
3465 マッチ
3466 </entry>
3467 </row>
3468 </thead>
3469 <tbody>
3470 <row>
3471 <entry>
3472 <literal>*</literal>
3473 </entry>
3474 <entry>
3475 "<literal>.</literal>"で始まらない任意のファイル(部分)名にマッチする。
3476 </entry>
3477 </row>
3478 <row>
3479 <entry>
3480 <literal>.*</literal>
3481 </entry>
3482 <entry>
3483 "<literal>.</literal>"で始まる任意のファイル(部分)名にマッチする。
3484 </entry>
3485 </row>
3486 <row>
3487 <entry>
3488 <literal>?</literal>
3489 </entry>
3490 <entry>
3491 任意の 1 文字にマッチする。
3492 </entry>
3493 </row>
3494 <row>
3495 <entry>
3496 <literal>[…]</literal>
3497 </entry>
3498 <entry>
3499 括弧中の 1 文字にマッチする。
3500 </entry>
3501 </row>
3502 <row>
3503 <entry>
3504 <literal>[a-z]</literal>
3505 </entry>
3506 <entry>
3507 "<literal>a</literal>"と"<literal>z</literal>"の範囲にある文字とマッチする。
3508 </entry>
3509 </row>
3510 <row>
3511 <entry>
3512 <literal>[^…]</literal>
3513 </entry>
3514 <entry>
3515 括弧内( "<literal>^</literal>"以外)に含まれる文字以外の文字にマッチ。
3516 </entry>
3517 </row>
3518 </tbody>
3519 </tgroup>
3520 </table>
3521 <simpara>例えば、次の例を試してみて、自分で考えてみましょう:</simpara>
3522 <screen>$ mkdir junk; cd junk; .[^.]*touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt
3523 $ echo *.txt
3524 1.txt 2.txt
3525 $ echo *
3526 1.txt 2.txt 3.c 4.h
3527 $ echo *.[hc]
3528 3.c 4.h
3529 $ echo .*
3530 . .. .5.txt ..6.txt
3531 $ echo .*[^.]*
3532 .5.txt ..6.txt
3533 $ echo [^1-3]*
3534 4.h
3535 $ cd ..; rm -rf junk</screen>
3536 <simpara>詳細は<literal>glob</literal>(7)を参照下さい。</simpara>
3537 <note>
3538 <simpara>通常のシェルのファイル名の展開と違い、<literal>find</literal>(1)が"<literal>-name</literal>"テスト他でシェルパターン"<literal>*</literal>"をテストする際にはファイル名先頭の"<literal>.</literal>"ともマッチします。(新<ulink
3539 url="&posix;">POSIX</ulink>機能)</simpara>
3540 </note>
3541 <note>
3542 <simpara>BASHはshopt組み込みオプションで"<literal>dotglob</literal>"や"<literal>noglob</literal>"や"<literal>nocaseglob</literal>"や"<literal>nullglob</literal>"や"<literal>nocaseglob</literal>"や"<literal>extglob</literal>"などとすることでグロブ挙動を色々変更できます。<literal>bash</literal>(1)参照下さい。</simpara>
3543 </note>
3544 </section>
3545 <section id="_return_value_of_the_command">
3546 <title>コマンドの戻り値</title>
3547 <simpara>各コマンドは終了ステータスを戻り値(変数:"<literal>$?</literal>")として返します。</simpara>
3548 <table id="commandexitcodes" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3549 <title>コマンドの終了コード。</title>
3550 <tgroup cols="3">
3551 <colspec colwidth="108" align="left"/>
3552 <colspec colwidth="108" align="left"/>
3553 <colspec colwidth="288" align="left"/>
3554 <thead>
3555 <row>
3556 <entry>
3557 コマンドの終了状態
3558 </entry>
3559 <entry>
3560 戻り値の数値
3561 </entry>
3562 <entry>
3563 戻り値の論理値
3564 </entry>
3565 </row>
3566 </thead>
3567 <tbody>
3568 <row>
3569 <entry>
3570 成功
3571 </entry>
3572 <entry>
3573 ゼロ、0
3574 </entry>
3575 <entry>
3576 <emphasis role="strong"></emphasis>
3577 </entry>
3578 </row>
3579 <row>
3580 <entry>
3581 失敗
3582 </entry>
3583 <entry>
3584 非ゼロ、-1
3585 </entry>
3586 <entry>
3587 <emphasis role="strong"></emphasis>
3588 </entry>
3589 </row>
3590 </tbody>
3591 </tgroup>
3592 </table>
3593 <simpara>つまり:</simpara>
3594 <screen>$ [ 1 = 1 ] ; echo $?
3595 0
3596 $ [ 1 = 2 ] ; echo $?
3597 1</screen>
3598 <note>
3599 <simpara>シェルの論理的な観点では、<emphasis role="strong">成功</emphasis>は、0(ゼロ)の値を持つ論理的<emphasis
3600 role="strong"></emphasis>として扱われることに注意してください。少々これは非直感的なのでここで再確認する必要があります。</simpara>
3601 </note>
3602 </section>
3603 <section id="_typical_command_sequences_and_shell_redirection">
3604 <title>典型的なコマンドシーケンスとシェルリディレクション</title>
3605 <simpara>次に挙げるシェルコマンドの慣用句を覚えてみましょう。</simpara>
3606 <table id="shellcommandidioms" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3607 <title>シェルコマンドの慣用句。</title>
3608 <tgroup cols="2">
3609 <colspec colwidth="144" align="left"/>
3610 <colspec colwidth="360" align="left"/>
3611 <thead>
3612 <row>
3613 <entry>
3614 コマンドの慣用句(1行入力)
3615 </entry>
3616 <entry>
3617 説明
3618 </entry>
3619 </row>
3620 </thead>
3621 <tbody>
3622 <row>
3623 <entry>
3624 <literal>command &amp;</literal>
3625 </entry>
3626 <entry>
3627 <literal>command</literal><emphasis
3628 role="strong">バックグラウンド</emphasis>でサブシェルの中で実行されます。
3629 </entry>
3630 </row>
3631 <row>
3632 <entry>
3633 <literal>command1 | command2</literal>
3634 </entry>
3635 <entry>
3636 <literal>command1</literal>の標準出力が<literal>command2</literal>の標準入力に継ぎ込まれます。両方のコマンドが<emphasis
3637 role="strong">同時進行</emphasis>で実行されるかもしれません。
3638 </entry>
3639 </row>
3640 <row>
3641 <entry>
3642 <literal>command1 2&gt;&amp;1 | command2</literal>
3643 </entry>
3644 <entry>
3645 <literal>command1</literal>の標準出力と標準エラー出力が<literal>command2</literal>の標準入力に継ぎ込まれます。両方のコマンドが<emphasis
3646 role="strong">同時進行</emphasis>で実行されるかもしれません。
3647 </entry>
3648 </row>
3649 <row>
3650 <entry>
3651 <literal>command1 ; command2</literal>
3652 </entry>
3653 <entry>
3654 <literal>command1</literal>を実行し、<emphasis
3655 role="strong">後に続いて</emphasis><literal>command2</literal>が実行されます。
3656 </entry>
3657 </row>
3658 <row>
3659 <entry>
3660 <literal>command1 &amp;&amp; command2</literal>
3661 </entry>
3662 <entry>
3663 <literal>command1</literal>が実行されます。もし成功したら、<emphasis
3664 role="strong">後に続いて</emphasis><literal>command2</literal>が実行されます。
3665 </entry>
3666 </row>
3667 <row>
3668 <entry>
3669 <literal>command1 || command2</literal>
3670 </entry>
3671 <entry>
3672 <literal>command1</literal>が実行されます。もし成功しなかったら、<emphasis
3673 role="strong">後に続いて</emphasis><literal>command2</literal>が実行されます。<literal>command1</literal>
3674 <emphasis role="strong"></emphasis>
3675 <literal>command2</literal>のどちらかが正常終了した場合に正常終了を返します。
3676 </entry>
3677 </row>
3678 <row>
3679 <entry>
3680 <literal>command &gt; foo</literal>
3681 </entry>
3682 <entry>
3683 <literal>command</literal>の標準出力を<literal>foo</literal>ファイルにリダイレクト (上書き) します。
3684 </entry>
3685 </row>
3686 <row>
3687 <entry>
3688 <literal>command 2&gt; foo</literal>
3689 </entry>
3690 <entry>
3691 <literal>command</literal>の標準エラー出力を<literal>foo</literal>ファイルにリダイレクト (上書き)
3692 します。
3693 </entry>
3694 </row>
3695 <row>
3696 <entry>
3697 <literal>command &gt;&gt; foo</literal>
3698 </entry>
3699 <entry>
3700 <literal>command</literal>の標準出力を<literal>foo</literal>ファイルにリダイレクト (追記) します。
3701 </entry>
3702 </row>
3703 <row>
3704 <entry>
3705 <literal>command 2&gt;&gt; foo</literal>
3706 </entry>
3707 <entry>
3708 <literal>command</literal>の標準エラー出力を<literal>foo</literal>ファイルにリダイレクト (追記)
3709 します。
3710 </entry>
3711 </row>
3712 <row>
3713 <entry>
3714 <literal>command &gt; foo 2&gt;&amp;1</literal>
3715 </entry>
3716 <entry>
3717 <literal>command</literal>の標準出力と標準エラー出力を<literal>foo</literal>ファイルにリダイレクトします。
3718 </entry>
3719 </row>
3720 <row>
3721 <entry>
3722 <literal>command &lt; foo</literal>
3723 </entry>
3724 <entry>
3725 <literal>command</literal>の標準入力を<literal>foo</literal>ファイルからリダイレクトします。
3726 </entry>
3727 </row>
3728 <row>
3729 <entry>
3730 <literal>command &lt;&lt; delimiter</literal>
3731 </entry>
3732 <entry>
3733 <literal>command</literal>の標準入力を"<literal>終端文字列</literal>"に出会うまでのこれに続く行からリダイレクトします。(ヒアドキュメント)
3734 </entry>
3735 </row>
3736 <row>
3737 <entry>
3738 <literal>command &lt;&lt;- 終端文字列</literal>
3739 </entry>
3740 <entry>
3741 <literal>command</literal>の標準入力を"<literal>終端文字列</literal>"に出会うまでのこれに続く行からリダイレクトします。行頭のタブ文字は入力から落とされます。(ヒアドキュメント)
3742 </entry>
3743 </row>
3744 </tbody>
3745 </tgroup>
3746 </table>
3747 <simpara>Debianシステムはマルチタスクシステムです。バックグラウンドジョブを使うと単一シェルの下で複数プログラムを実行可能にします。バックグラウンドジョブの管理にはシェル内部組み込みコマンドの<literal>jobs</literal><literal>fg</literal><literal>bg</literal><literal>kill</literal>を使います。bash(1)マンページ中の"SIGNALS"と"JOB
3748 CONTROL"セクションや<literal>builtins</literal>(1)を参照下さい。</simpara>
3749 <simpara>リディレクションの簡単な例を試してみましょう:</simpara>
3750 <screen>$ &lt;/etc/motd pager</screen>
3751 <screen>$ pager &lt;/etc/motd</screen>
3752 <screen>$ pager /etc/motd</screen>
3753 <screen>$ cat /etc/motd | pager</screen>
3754 <simpara>4つ全ての例が全く同じ表示をしますが、最後の例は余計な<literal>cat</literal>コマンドを実行するので理由なくリソースの無駄遣いをします。</simpara>
3755 <simpara>シェルでは<literal>exec</literal>組み込みコマンドを任意のファイルディスクリプタとともに使いファイルをオープンすることができます。</simpara>
3756 <screen>$ echo Hello &gt;foo
3757 $ exec 3&lt;foo 4&gt;bar # open files
3758 $ cat &lt;&amp;3 &gt;&amp;4 # redirect stdin to 3, stdout to 4
3759 $ exec 3&lt;&amp;- 4&gt;&amp;- # close files
3760 $ cat bar
3761 Hello</screen>
3762 <simpara>上記で、"<literal><emphasis>n</emphasis>&lt;&amp;-</literal>"と"<literal><emphasis>n</emphasis>&gt;&amp;-</literal>"
3763 はファイルディスクリプタ"<literal><emphasis>n</emphasis></literal>"をクローズするという意味です。</simpara>
3764 <simpara>ファイルデスクリプタの0-2は事前定義されています。</simpara>
3765 <table id="predefinedfiledescriptors" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3766 <title>事前定義されたファイルデスクリプタ</title>
3767 <tgroup cols="3">
3768 <colspec colwidth="108" align="left"/>
3769 <colspec colwidth="108" align="left"/>
3770 <colspec colwidth="288" align="left"/>
3771 <thead>
3772 <row>
3773 <entry>
3774 デバイス
3775 </entry>
3776 <entry>
3777 説明
3778 </entry>
3779 <entry>
3780 ファイルデスクリプタ
3781 </entry>
3782 </row>
3783 </thead>
3784 <tbody>
3785 <row>
3786 <entry>
3787 <literal>stdin</literal>
3788 </entry>
3789 <entry>
3790 標準出力
3791 </entry>
3792 <entry>
3793 0
3794 </entry>
3795 </row>
3796 <row>
3797 <entry>
3798 <literal>stdout</literal>
3799 </entry>
3800 <entry>
3801 標準出力
3802 </entry>
3803 <entry>
3804 1
3805 </entry>
3806 </row>
3807 <row>
3808 <entry>
3809 <literal>stderr</literal>
3810 </entry>
3811 <entry>
3812 標準エラー出力
3813 </entry>
3814 <entry>
3815 2
3816 </entry>
3817 </row>
3818 </tbody>
3819 </tgroup>
3820 </table>
3821 </section>
3822 <section id="_command_alias">
3823 <title>コマンドエリアス</title>
3824 <simpara>良く使うコマンドにエイリアスを設定できます。例えば:</simpara>
3825 <screen>$ alias la='ls -la'</screen>
3826 <simpara>こうすると、"<literal>la</literal>"が"<literal>ls
3827 -la</literal>"の短縮形として機能し、全てのファイルを長いリスト形式でリストします。</simpara>
3828 <simpara>既存の全エアリアスは次のようにするとリストできます:</simpara>
3829 <screen>$ alias</screen>
3830 <simpara><literal>type</literal>内部コマンドを使うと正確なパスやコマンドの正体を識別できます。例えば:</simpara>
3831 <screen>$ type ls
3832 ls is hashed (/bin/ls)
3833 $ type la
3834 la is aliased to ls -la
3835 $ type echo
3836 echo is a shell builtin
3837 $ type file
3838 file is /usr/bin/file</screen>
3839 <simpara>上記で、<literal>ls</literal>は最近探索されましたが"<literal>file</literal>"
3840 は最近探索されていませので、"<literal>ls</literal>"は"ハッシュされた"つまりシェルには"<literal>ls</literal>"コマンドの場所を高速アクセスのために内部記録していると表示されます。</simpara>
3841 <tip>
3842 <simpara><xref linkend="_colorized_commands"/>参照下さい。</simpara>
3843 </tip>
3844 </section>
3845 </section>
3846 <section id="_unix_like_text_processing">
3847 <title>Unix的テキスト処理</title>
3848 <simpara>Unix的作業環境では、テキスト処理はテキストを標準テキスト処理ツールの連鎖パイプを通す行います。これは決定的なUnixの発明です。</simpara>
3849 <section id="_unix_text_tools">
3850 <title>Unixテキストツール</title>
3851 <simpara>Unix的システムでしばしば使われる標準テキスト処理ツールがいくつかあります。</simpara>
3852 <itemizedlist>
3853 <listitem>
3854 <simpara>
3855 正規表現無使用:
3856 </simpara>
3857 <itemizedlist>
3858 <listitem>
3859 <simpara><literal>cat</literal>(1)はファイルをつなぎ合わせ全てを出力します。
3860 </simpara>
3861 </listitem>
3862 <listitem>
3863 <simpara><literal>tac</literal>(1)はファイルをつなぎ合わせ逆順で出力します。
3864 </simpara>
3865 </listitem>
3866 <listitem>
3867 <simpara><literal>cut</literal>(1)は行の一部を選択し出力します。
3868 </simpara>
3869 </listitem>
3870 <listitem>
3871 <simpara><literal>head</literal>(1)はファイルの最初の部分を選択し出力します。
3872 </simpara>
3873 </listitem>
3874 <listitem>
3875 <simpara><literal>tail</literal>(1)はファイルの最後の部分を選択し出力します。
3876 </simpara>
3877 </listitem>
3878 <listitem>
3879 <simpara><literal>sort</literal>(1)は行を順番に並び替えます。
3880 </simpara>
3881 </listitem>
3882 <listitem>
3883 <simpara><literal>uniq</literal>(1)は順番に並べられたファイルから重複行を削除します。
3884 </simpara>
3885 </listitem>
3886 <listitem>
3887 <simpara><literal>tr</literal>(1)は文字を変換削除します。
3888 </simpara>
3889 </listitem>
3890 <listitem>
3891 <simpara><literal>diff</literal>(1)は1行ごとにファイルを比較します。
3892 </simpara>
3893 </listitem>
3894 </itemizedlist>
3895 </listitem>
3896 <listitem>
3897 <simpara>
3898 基本正規表現(<emphasis role="strong">BRE</emphasis>)使用:
3899 </simpara>
3900 <itemizedlist>
3901 <listitem>
3902 <simpara><literal>egrep</literal>(1)はテキストのパターンマッチをします。
3903 </simpara>
3904 </listitem>
3905 <listitem>
3906 <simpara><literal>ed</literal>(1)は原始的な行エディタ。
3907 </simpara>
3908 </listitem>
3909 <listitem>
3910 <simpara><literal>sed</literal>(1)はストリームエディタ。
3911 </simpara>
3912 </listitem>
3913 <listitem>
3914 <simpara><literal>vim</literal>(1)はスクリーンエディタ。
3915 </simpara>
3916 </listitem>
3917 <listitem>
3918 <simpara><literal>emacs</literal>(1)はスクリーンエディタ。(ちょっと拡張された<emphasis
3919 role="strong">BRE</emphasis>)
3920 </simpara>
3921 </listitem>
3922 </itemizedlist>
3923 </listitem>
3924 <listitem>
3925 <simpara>
3926 拡張正規表現(<emphasis role="strong">ERE</emphasis>)使用:
3927 </simpara>
3928 <itemizedlist>
3929 <listitem>
3930 <simpara><literal>egrep</literal>(1)はテキストのパターンマッチをします。
3931 </simpara>
3932 </listitem>
3933 <listitem>
3934 <simpara><literal>awk</literal>(1)は単純なテキスト処理をします。
3935 </simpara>
3936 </listitem>
3937 <listitem>
3938 <simpara><literal>tcl</literal>(3tcl)は考え得る全てのテキスト処理をします:<literal>re_syntax</literal>(3)。時々<literal>tk</literal>(3tk)とともに使用されます。
3939 </simpara>
3940 </listitem>
3941 <listitem>
3942 <simpara><literal>perl</literal>(1)は考え得る全てのテキスト処理をします。<literal>perlre</literal>(1).
3943 </simpara>
3944 </listitem>
3945 <listitem>
3946 <simpara><literal>pcregrep</literal>パッケージの<literal>pcregrep</literal>(1)
3947 はテキストのパターンマッチを<ulink
3948 url="&perlcompatiblererexpressionspcre;">Perl互換正規表現(PCRE)</ulink>パターンを使ってします。
3949 </simpara>
3950 </listitem>
3951 <listitem>
3952 <simpara><literal>re</literal>モジュールとともに使うことで<literal>python</literal>(1)は考え得る全てのテキスト処理をします。"<literal>/usr/share/doc/python/html/index.html</literal>"参照下さい。
3953 </simpara>
3954 </listitem>
3955 </itemizedlist>
3956 </listitem>
3957 </itemizedlist>
3958 <simpara>もしこれらのコマンドが正確にどう動作するかを確認したいなら、"<literal>man
3959 command</literal>"を使って自分で見つけましょう。</simpara>
3960 <note>
3961 <simpara>ソート順や範囲表現はロケールに依存します。コマンドの伝統的挙動を得たい際には、"<literal>LANG=C</literal>"をコマンドの前に付けて<emphasis
3962 role="strong">UTF-8</emphasis>ロケールではなく<emphasis
3963 role="strong">C</emphasis>ロケールでコマンドを使いましょう。(<xref
3964 linkend="_lang_variable"/><xref linkend="_the_locale"/>を参照)。</simpara>
3965 </note>
3966 <note>
3967 <simpara><ulink url="&perl;">Perl</ulink>正規表現(<literal>perlre</literal>(1))と<ulink
3968 url="&perlcompatiblererexpressionspcre;">Perl互換正規表現(PCRE)</ulink><literal>re</literal>モジュールで提供される<ulink
3969 url="&python;">Python</ulink>正規表現は<emphasis
3970 role="strong">ERE</emphasis>に多くの共通の拡張をしています。</simpara>
3971 </note>
3972 </section>
3973 <section id="_regular_expressions">
3974 <title>正規表現</title>
3975 <simpara><ulink
3976 url="&regularexpressions;">正規表現</ulink>は多くのテキスト処理ツールで使われています。シェルグロブに類似していますがより複雑で強力です。</simpara>
3977 <simpara>正規表現はマッチするパターンを表現し、テキスト文字と<emphasis role="strong">メタ文字</emphasis>からなっています。</simpara>
3978 <simpara><emphasis
3979 role="strong">メタ文字</emphasis>は特別な意味を持った文字です。上記のようにテキストツールによって、<emphasis
3980 role="strong">BRE</emphasis><emphasis
3981 role="strong">ERE</emphasis>の2つの主要なスタイルがあります。</simpara>
3982 <table id="metacharactersforbreandere" pgwide="0" frame="topbot" rowsep="1" colsep="1">
3983 <title>BREとEREのメタ文字。</title>
3984 <tgroup cols="3">
3985 <colspec colwidth="108" align="left"/>
3986 <colspec colwidth="108" align="left"/>
3987 <colspec colwidth="288" align="left"/>
3988 <thead>
3989 <row>
3990 <entry>
3991 BRE
3992 </entry>
3993 <entry>
3994 ERE
3995 </entry>
3996 <entry>
3997 正規表現の意味
3998 </entry>
3999 </row>
4000 </thead>
4001 <tbody>
4002 <row>
4003 <entry>
4004 <literal> \ . [ ] ^ $ * </literal>
4005 </entry>
4006 <entry>
4007 <literal>\ . [ ] ^ $ *</literal>
4008 </entry>
4009 <entry>
4010 共通の<emphasis role="strong">メタ文字</emphasis>
4011 </entry>
4012 </row>
4013 <row>
4014 <entry>
4015 <literal>\+ \? \( \) \{ \} \|</literal>
4016 </entry>
4017 <entry>
4018  
4019 </entry>
4020 <entry>
4021 "<literal>\</literal>"でエスケープされた、BREのみで用いる<emphasis
4022 role="strong">メタ文字</emphasis>
4023 </entry>
4024 </row>
4025 <row>
4026 <entry>
4027  
4028 </entry>
4029 <entry>
4030 <literal>+ ? ( ) { } |</literal>
4031 </entry>
4032 <entry>
4033 "<literal>\</literal>"でエスケープされ無い、EREのみで用いる<emphasis
4034 role="strong">メタ文字</emphasis>
4035 </entry>
4036 </row>
4037 <row>
4038 <entry>
4039 <literal>c</literal>
4040 </entry>
4041 <entry>
4042 <literal>c</literal>
4043 </entry>
4044 <entry>
4045 <emphasis role="strong">非メタ文字</emphasis> "<literal>c</literal>"をマッチする。
4046 </entry>
4047 </row>
4048 <row>
4049 <entry>
4050 <literal>\c</literal>
4051 </entry>
4052 <entry>
4053 <literal>\c</literal>
4054 </entry>
4055 <entry>
4056 当該シーケンスは、<literal>c</literal>"自身が<emphasis
4057 role="strong">メタ文字</emphasis>でも"<literal>c</literal>"というそのままの文字とマッチします。
4058 </entry>
4059 </row>
4060 <row>
4061 <entry>
4062 <literal>.</literal>
4063 </entry>
4064 <entry>
4065 <literal>.</literal>
4066 </entry>
4067 <entry>
4068 改行を含めた如何なる文字ともマッチします。
4069 </entry>
4070 </row>
4071 <row>
4072 <entry>
4073 <literal>^</literal>
4074 </entry>
4075 <entry>
4076 <literal>^</literal>
4077 </entry>
4078 <entry>
4079 文字列の最初とマッチします。
4080 </entry>
4081 </row>
4082 <row>
4083 <entry>
4084 <literal>$</literal>
4085 </entry>
4086 <entry>
4087 <literal>$</literal>
4088 </entry>
4089 <entry>
4090 文字列の最後とマッチします。
4091 </entry>
4092 </row>
4093 <row>
4094 <entry>
4095 <literal>\&lt;</literal>
4096 </entry>
4097 <entry>
4098 <literal>\&lt;</literal>
4099 </entry>
4100 <entry>
4101 単語先頭とマッチします。
4102 </entry>
4103 </row>
4104 <row>
4105 <entry>
4106 <literal>\&gt;</literal>
4107 </entry>
4108 <entry>
4109 <literal>\&gt;</literal>
4110 </entry>
4111 <entry>
4112 単語末尾とマッチします。
4113 </entry>
4114 </row>
4115 <row>
4116 <entry>
4117 <literal>\[abc…\]</literal>
4118 </entry>
4119 <entry>
4120 <literal>[abc…]</literal>
4121 </entry>
4122 <entry>
4123 この文字リストは"<literal>abc…</literal>"のいずれかの文字にマッチします。
4124 </entry>
4125 </row>
4126 <row>
4127 <entry>
4128 <literal>\[^abc…\]</literal>
4129 </entry>
4130 <entry>
4131 <literal>[^abc…]</literal>
4132 </entry>
4133 <entry>
4134 この否定の文字リストは"<literal>abc…</literal>"以外の文字にマッチします。
4135 </entry>
4136 </row>
4137 <row>
4138 <entry>
4139 <literal>r*</literal>
4140 </entry>
4141 <entry>
4142 <literal>r*</literal>
4143 </entry>
4144 <entry>
4145 "<literal>r</literal>"という正規表現の0回以上にマッチ。
4146 </entry>
4147 </row>
4148 <row>
4149 <entry>
4150 <literal>r\+</literal>
4151 </entry>
4152 <entry>
4153 <literal>r+</literal>
4154 </entry>
4155 <entry>
4156 "<literal>r</literal>"という正規表現の1回以上にマッチ。
4157 </entry>
4158 </row>
4159 <row>
4160 <entry>
4161 <literal>r\?</literal>
4162 </entry>
4163 <entry>
4164 <literal>r?</literal>
4165 </entry>
4166 <entry>
4167 "<literal>r</literal>"という正規表現の0回か1回にマッチ。
4168 </entry>
4169 </row>
4170 <row>
4171 <entry>
4172 <literal>r1\|r2</literal>
4173 </entry>
4174 <entry>
4175 <literal>r1|r2</literal>
4176 </entry>
4177 <entry>
4178 "<literal>r1</literal>"か"<literal>r2</literal>"という正規表現のいずれかにマッチ。
4179 </entry>
4180 </row>
4181 <row>
4182 <entry>
4183 <literal>\(r1\|r2\)</literal>
4184 </entry>
4185 <entry>
4186 <literal>(r1|r2)</literal>
4187 </entry>
4188 <entry>
4189 "<literal>r1</literal>"か"<literal>r2</literal>"という正規表現のいずれかにマッチし、それを<emphasis
4190 role="strong">括弧で囲まれた</emphasis>正規表現として扱う。
4191 </entry>
4192 </row>
4193 </tbody>
4194 </tgroup>
4195 </table>
4196 <simpara><emphasis role="strong"><literal>emacs</literal></emphasis>の正規表現は、<em