intro

ユーザーコマンドの紹介

intro - ユーザーコマンドの紹介
マニュアルの 1 章は、ユーザーコマンドやツールの説明について説明している。 例えば、ファイル操作ツール、シェル、コンパイラ、ウェブブラウザ、 ファイルやイメージのビューアやエディタ、などである。
すべてのコマンドは終了時にステータス値を返す。 この値を検査することで (例えば、ほとんどのシェルでは変数 $? に最後に実行したコマンドのステータスが保持される)、 そのコマンドが成功して完了したかどうかを知ることができる。 伝統的に、終了ステータス 0 は成功を示すのに使われ、非 0 の値は そのコマンドが成功しなかったことを示す (終了ステータスの詳細は wait (2) に書かれている)。 非 0 の終了ステータスは 1 から 255 の範囲の値をとることができ、 いくつかのコマンドではコマンドが失敗した理由を示すために 複数の非 0 のステータス値が使用されている。
Linux は Unix の一種であり、大雑把にいえば、 Unix 上のユーザコマンドはすべて Linux 上でも全く同じ動作をする (FreeBSD や他のの多くの Unix 風のシステムでも同様である)。 Linux には GUI (グラフィカル・ユーザ・インタフェース) が用意されており、 何かをポイントしたり、クリックしたり、ドラッグしたりでき、うまくいけば 最初にたくさんの文書を読まなくても目的の作業ができてしまうこともある。 伝統的な Unix 環境は CLI (コマンド・ライン・インタフェース) であり、 コマンドを打ち込んで、コンピュータに何をすべきか教えてやる。 CLI は GUI よりも速く強力だが、どのコマンドが何をするのか知っている必要 がある。CLI を使い始めるために必要最小限のコマンドを以下に述べる。

ログイン

作業を開始するためには、ます最初にログインしなければならないだろう。 すなわち、ユーザ名とパスワードを入力しなければならない。詳しくは login (1) を参照のこと。 login プログラムは (コマンド・インタープリタである) シェル (shell) を起動する。グラフィカル・ログインの場合は、メニューやアイコンがある スクリーンが表示され、マウスをクリックするとウィンドウが開いて シェルが起動されることだろう。詳しくは xterm (1) を参照のこと。

シェル

コマンドは、コマンド・インタープリタである シェル に対して入力する。 シェル は、組み込みコマンドではなく普通のプログラムであり、好みのものに変更する ことができる。各人にはそれぞれ好みのシェルがある。標準のシェルは sh と呼ばれる。 ash (1), bash (1), csh (1), zsh (1), chsh (1) を参照のこと。 セッションの例を以下に示す。
knuth login:  aeb
Password:  ********
%  date
Tue Aug  6 23:50:44 CEST 2002
%  cal
August 2002
Su Mo Tu We Th Fr Sa
1 2  3
4 5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

% ls bin tel % ls -l total 2 drwxrwxr-x 2 aeb 1024 Aug 6 23:51 bin -rw-rw-r-- 1 aeb 37 Aug 6 23:52 tel % cat tel maja 0501-1136285 peter 0136-7399214 % cp tel tel2 % ls -l total 3 drwxr-xr-x 2 aeb 1024 Aug 6 23:51 bin -rw-r--r-- 1 aeb 37 Aug 6 23:52 tel -rw-r--r-- 1 aeb 37 Aug 6 23:53 tel2 % mv tel tel1 % ls -l total 3 drwxr-xr-x 2 aeb 1024 Aug 6 23:51 bin -rw-r--r-- 1 aeb 37 Aug 6 23:52 tel1 -rw-r--r-- 1 aeb 37 Aug 6 23:53 tel2 % diff tel1 tel2 % rm tel1 % grep maja tel2 maja 0501-1136285 %

ここで Control-D を打つとセッションが終了する。 ここで、 % はコマンド・プロンプトである。コマンド・プロンプトはシェル独特のやり方で、 シェルが次のコマンドを受け付けられる状態になっていることを示している。 プロンプトは、柔軟にカスタマイズ することができ、ユーザ名、マシン名、カレント・ディレクトリ、時刻などを プロンプトに含めることができる。 PS1=What next, master? と設定すると、 プロンプトはそのように変更されるだろう。 例にあるように、 date という日付と時刻を表示するコマンドや、 cal というカレンダを表示するコマンドもある。 ls コマンドはカレント・ディレクトリの内容をリスト表示する、つまり ディレクトリ内にどんなファイルがあるかを教えてくれる。 -l オプションをつけて実行すると、詳細表示が行われ、 ファイルの所有者、サイズ、日付などが表示される。 上の例では、tel ファイルは、サイズが 37 バイトで、所有者は aeb で、 所有者は読み書きができ、他の人は読み出しだけができることが分かる。 ファイルの所有者と権限 (permission) は、それぞれ chown コマンドと chmod コマンドで変更できる。 cat コマンドはファイルの内容を表示する。 (コマンド名は concatenate and print (連結して印字する) に由来している。 引数として与えられた全てのファイルの内容が連結され、「標準出力」 に送られる。上の例では、標準出力は端末のスクリーンである。) cp コマンドはファイルのコピーを行う (その名前は copy に由来する)。 一方、 mv コマンドは単純にファイル名の変更を行う (その名前は move に由来する)。 diff コマンドは 2 つのファイルの違いを表示する。 上の例では、二つのファイルに違いがないので、何も出力されていない。 rm コマンドはファイルを削除する。ファイルはなくなってしまうので 注意して使用すること! ゴミ箱に相当するものはなく、 削除はそのファイルが完全に失われることを意味する。 grep コマンドは、指定された文字列を一つ以上のファイルから探す (コマンド名は g/re/p に由来している)。 上の例では、Maja の電話番号が見つかっている。

パス名とカレント・ディレクトリ

ファイルはファイル階層という大きな木の中にある。それぞれのファイルには パス名 (pathname) があり、パス名は (/ と呼ばれる) 木の根からの経路を示すものである。 上の例では、完全なパス名は /home/aeb/tel のようになる。 いつも完全なパス名を使うのは不便なので、カレント・ディレクトリにある ファイル名は、ファイル名の最後の部分だけに省略することができる。 したがって、カレント・ディレクトリが /home/aeb の時は、 /home/aeb/tel を tel に省略して書くことができる。 pwd コマンドはカレント・ディレクトリを表示する。 cd コマンドはカレント・ディレクトリを変更する。 cd /、pwd、cd、pwd と順に実行してみるとよい。

ディレクトリ

mkdir コマンドはディレクトリを新規に作成する。 rmdir コマンドは空であればディレクトリを削除し、 空でなければエラーメッセージを表示する。 find コマンドは、指定された名前やその他の属性を持つファイルを探す tel という名前のファイルの検索をカレント・ディレクトリから開始する。 (カレント・ディレクトリは . で表す)。find / -name tel としても 同じことを行うが、検索は木の根 (/) から開始される。 数 GB のディスクに対して検索をかけると時間がかかるので、 そのようなときは locate (1) を使った方がいいかもしれない。

ディスクとファイルシステム

mount コマンドは、(フロッピーや CDROM などの) ディスク上のファイルシステムを 大きなファイルシステム階層に接続する。逆に umount コマンドは切り離しを行う。 df コマンドを実行すると、ディスクの未使用量がどの程度かを表示する。

プロセス

Unix システムでは、多くのユーザプロセスとシステムプロセスが同時に実行される。 対話的に実行できるプロセスは foreground で実行されており、そうでないものは background で実行されている。 コマンド ps により、どのプロセスが実行されているかやプロセスが持っている番号 (プロセス番号) を表示できる。 コマンド kill を使うことで、プロセスを取り除くことができる。 オプションなしで実行されると、「いなくなって下さい」というやさしい要求 を行う。kill -9 に続けてプロセス番号を指定すると、指定したプロセスを 直ちに削除する。 foreground プロセスは多くの場合 Control-C をタイプすることで 殺すことができる。

情報の探し方

非常にたくさんのコマンドがあり、 それぞれのコマンドにはたくさんのオプションがある。 伝統的には、コマンドの説明は (このドキュメントもそうだが) man ページ に書かれている。例えば man kill コマンドを実行すると、kill コマンドの 使い方に関する説明が表示される。(同様に man man は man コマンドに ついての説明を表示する。) man プログラムはテキストを pager に渡して表示を行う。 pager として less が使われることが多い。 次のページに進むにはスペース・キーを、終了するには q を押す。 ドキュメントでは、他の man ページへの参照は man (1) のように名前とセクション番号で示すのが一般的である。 man ページは簡潔に書かれており、詳細を忘れたときに素早く情報を見つける ことができる。例や説明とともに入門向けの記載もあるので、初めての人にとっても 役に立つものである。 多くの GNU/FSF ソフトウェアには info ファイルが付属している。 info info とタイプすると、info プログラムの使い方の紹介が表示される。 特集記事については HOWTO で扱われることが多い。 /usr/share/doc/howto/en を見るといいだろう。 HTML ファイルがあった場合はブラウザを使って表示すればよい。
standards (7)