by Seiji Matsumoto
最近では UNIX や Linux 関連の参考書も数多く出版されていますが、 インターネット上にも、多くの情報があります。 以下、私がみつけた日本語での解説ページをいくつか紹介します。 各自でもいろいろと探してみてください。
以下、UNIXに触れるためのいくつかの基本的な用語を説明します。
ps
コマンドで現在走っているプロセスを表示する
ことができます。
GUI でファイルやディレクトリの操作をする場合、 覚えなければいけないことはそれほどありません。 例えば konqueror の上部に表示されているメニューや右ボタンを クリックして現れるメニューから必要なものを選んでください。 ファイルやディレクトリ(フォルダ)の作成、削除、移動などはもちろん パーミッションの設定なども簡単にできます。 ファイルやディレクトリを違うディレクトリに移動するには、 Konqueror のウィンドウを2つ開いてドラッグ&ドロップするのが 簡単です。
マウスを使わずより速く操作したい場合、 もっと複雑な操作をしたい場合、 あるいは逆にもっと単純な操作をしたい場合、などには基本的な UNIX のコマンドをしっておくと便利です。 たくさんの UNIX のコマンドを覚える必要はありませんが、 よく使うコマンドはある程度知っているといいでしょう。 しかし man というコマンドだけはぜひ覚えておきましょう。 それだけ覚えて置けば他のコマンドの使い方は man で調べることが できます。 「シェルの基本的なコマンド」 にまとめてありますので活用してください。
.
で始まるファイル名について
UNIXでは".
" (ピリオド)
で始まる名前をもつファイルがたくさん存在します。
それらはログインした時の自分独自の設定や
いろいろなソフトの設定を保存するためのファイルなどです。
これらのファイル名は ls
では表示されません。
表示するには -a
とオプションをつけて ls -a
とします。
konqueror でこれらのファイルを表示するには、 「表示」→「隠しファイルを表示」をチェックします。
ひとつ上のディレクトリは「../
」で表し、
今いるディレクトリを表すには「./
」で表します
(ディレクトリであることを明示するために「/
」
を書いてありますが、なくてもかまいません)。
例えば、現在いるディレクトリの絶対パス表示が、
「/home/a/a020000/
」だとすると、
「 ../
」 は「/home/a/
」という
ひとつ上の(親の)ディレクトリを表します。
このようにこの相対パス表示を使う方が
絶対パス表示 (例えば /home/a/a020000/
)
を使うより便利こともあります。
ところで自分のホーム・ディレクトリは「 ~/
」で
表すことができます。
またユーザIDが a020000 の人のホーム・ディレクトリは
「~a020000/
」と表します。
UNIXでは長い名前のコマンドやファイル名を使うことが多いので、 多くのシェルで 名前の補完機能がついています。 bash の場合、途中まで入力して tab キーを押してください。 候補が一つしかない場合には、それだけで補完してくれます。 いくつか候補がある場合には tab キーを2回押せば候補一覧が 表示されます。
いろいろなプログラムを起動するには、
GUI ではアイコンをクリックしたり
Kメニュー(KDEの場合)などから選びます。
CUI ではプログラム名を直接入力します。
例えば、sylpheed というメールソフトを起動するには、
sylpheed のアイコンをクリックしてもいいですし、
シェルで sylpheed
と直接入力しても起動できます。
Unixではいろいろなコマンドを組み合わせて使うことができます。 例えば ls の出力が長い時
$ ls -l | more
とすると ls の出力が more の入力となって画面に現れます。
ただしここで、$ はプロンプトと呼ばれ、命令待ちの状態を 示しています (この文字は入力しません)。 $ ではなく違う文字列を指定することもできます。 「ユーザ名@ホスト名:ディレクトリ名$ 」のような長い プロンプトもよく使われます。
$ ps aux | grep matsu
とすると全てのプロセスの中から matsu
という文字列を
含むプロセスだけを取り出すことができます。
$ ps aux | grep matsu | more
のようにさらに多くのコマンドを組み合わせることもできます。
標準出力をファイルに書き込みたいときには > を使います。
例えば ls
の出力を foo
に書き込む場合には
$ ls > foo
とします。
ファイルfoo
の終りに付け加えたいときには
$ ls >> foo
としてください。 このように出力先を変えることをリダイレクトと言います。
UNIX はもともと複数の人が使えるように設計された(マルチユーザの) オペレーティング・システム (OS) なので、 自分のファイルやディレクトリが、他人に読まれたり、 書き換えられたりしないように、アクセス許可(パーミッション) を設定することができます。
konqueror を使えば簡単にパーミッションを設定できます。 ファイルのアイコンの上で右ボタンを押して、 「プロパティ」→「許可情報」を選び、 許可を与える項目をチェックしてください。
シェルを立ち上げ ls -l
とするとファイルの一覧が
表示されます。
最初の方に並んでいる
"r" とか "w"、"x"
がパーミッションを表しています。
最初の文字はファイルのタイプ(ディレクトリのときは
d
)を表し、
次の3文字がユーザ本人、次の3文字がグループ、最後の3文字が
他人に対して、それぞれ"読み込み"、
"書き込み"、"実行"
が許可されているかどうかを表しています。 たとえば ls で
drwx--x--x 2 matsu student 4096 4月 8 12:03 public_html drwx------ 7 matsu student 4096 4月 30 20:00 Mail drwx------ 3 matsu student 4096 5月 8 10:32 Desktop -rw-r--r-- 1 matsu student 23 5月 15 09:00 profile -rwxr-xr-x 1 matsu student 4803 5月 15 13:36 a.out
と表示されたとします。この中の Mail
というディレクトリはユーザ(matsu)以外は、読み、書き、
移動が全て禁止されているので、
ユーザ以外はこのディレクトリの内容を見たり、
このディレクトリにアクセスしたりすることはできません
(ワーキング・ディレクトリにできない)。
一方 profile
は読み込み許可(r)
がありますので、ファイルの内容を見ることができます。
また、a.out
というファイルは誰でも実行可能なファイル
(x は実行可能なファイルという意味) なので
このディレクトリで ./a.out
とすればだれでも
このファイルを実行することができます。通常は他人の
ディレクトリにある得体の知れないファイルは絶対に実行しては
いけません (どのような命令が実行されるか分からないので)。
これらのパーミッションを変更するためには
"chmod
"というコマンドを使います。
詳しくは man chmod
で調べてください。
基本的には
$ chmod g-r ファイル名
のように使います。"g
" はグループを表し、
"-r
"は読み込み(r
)
パーミッションを取る
(-
)という意味になります。
ユーザ(user)の権限は "u
"、
他人(others)の権限は "o
"、
書き込み権限は "w
"、
実行権限は "x
"
で表します。これらの権限を与える時には
"+
"を使います。
例えば
$ chmod ug+rw ファイル名
とするとユーザ本人とグループに属する人には読み込み(r)と書き込み(w)
の許可を与えるということになります。
また"ugo
"をまとめて
"a
"で
表すこともできます。
また、
chmod o+r filename
などの使い方の他に
chmod 644 filename
といった使い方もあります。
644
と指定すれば rw-r--r--
の意味になります。つまりそれぞれの1つの数字は rwx
のパーミッションを2進法の3桁の数字と考え、それを10進法に
直したものを表しています。
パーミッション 2進表示 10進表示 --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7
となるので、755
を指定すると
rwxr-xr-x
となり、
600
とすると rw-------
となります。
ファイル操作のコマンドでは、以下のような正規表現とよばれる 表現法を使って一度に複数のファイルやディレクトリを操作する ことができます。
記号 | 意味 | 例 | 対応する名前 |
* |
0文字以上の任意の文字列 | a*b |
ab, a1b, acdb, abcdegb, … |
? |
任意の1文字 | a?b |
a1b, a1b, aab, afb, … |
[ ] |
[ ]内の任意の一文字 | a[bc]d |
abd, acd, … |
a[b-f]b |
abb, acb, adb, aeb, afb, … |
コマンド | 意味 |
ls a* |
a で始まる名前のファイルを表示する |
mv foo* tmp/ |
fooで始まる名前のファイルをすべて tmp/ に移動する |
rm *.doc |
.docで終る名前のファイルを全て消す |
プログラムが暴走したときには一度これらのプロセスを kill してから 再起動してみましょう。 まず、シェルを立ち上げ kill したいプロセスのプロセス番号を調べます。
$ ps axu | grep a020000
ユーザIDの右に表示されている数字がプロセス番号です。
そして
$ kill プロセス番号
とします。
シェルが立ち上がらないときは他のコンピュータからリモート・ログインして、
同じ操作をします。kill
でも死なないときには
kill -9
としてみましょう。例えば、プロセス番号が
10000 のプロセスをとにかく kill するには
$ kill -9 10000
とします。