Linux リテラシ2006 - 第1回 Linux の基礎知識と基本コマンド1

Linuxとは

Linuxはオペレーティングシステム(以下OSと略す)であり、WindowsやMac等もOSの一種です。1991年、当時フィンランドのヘルシンキ大学の大学院生であったライナス氏(Linus Torvalds)によって開発され、オープンソースソフトウェアとしてインターネット上に公開されました。
オープンソースソフトウェアとは誰でもソースコードを閲覧でき、ライセンスによってはそれを修正したり、再配布することが出来ます。主要なオープンソースソフトウェアのためのライセンスとしてGNUの「GPL(General Public License)」やBSDの「BSD License」があります。
Linuxは米AT & T 社(当時)のベル研究所で開発されたUNIXと同等の機能を持っていながら、現在では高い安定性をもち、無料で利用できるため様々な目的で使用されています。

Linuxの中核はカーネルというプログラムで出来ています。Linuxを誰でも手軽に利用してもらうために、カーネルの上で動く様々なアプリケーションやユーザインターフェースを利用しやすいようにカーネルと一緒に一つにまとめて配布するという人々が現れ、それのまとめたものをディストリビューションと言います。またその中から、まとめたものをサポートする権利を販売するRed Hat社などのディストリビューターがいます。

ディストリビューションは100種類以上あり主にRed Hat系、Debian系、Slackware系、Turbo Linux系などがあります。

Linux の特徴

安定性

Linuxは安定性の面で高い評価を得ています。
サーバとして使用されるコンピュータは、停止してしまうと多くのユーザに影響を及ぼしてしまうため高い安定性が要求されます。Linuxはオープンソースソフトウェアという様々な分野の専門家が手を出しやすい環境で開発されているので、技術者達がコミュニケーションを図り、知恵を出し合う事によって問題が修正されるシステムになっています。またLinuxをターゲットとしたウィルスはWindowsに比べ少なく、その安定性の高さからLinuxは現在サーバに使用されるオペレーティングシステムとして広く普及しています。

Linuxのユーザインターフェース

ユーザインターフェースとはコンピュータとユーザが情報をやりとりするための手段のことで、Windowsのように情報の表示にグラフィックを利用し、マウスを主体として操作するGUI (Graphical User Interface) と、キーボードを主体として情報の表示を文字だけで操作をする CUI (Character-based User Interface) があります。

ファイルシステム

ファイルシステムとはハードディスク等の記憶装置上でデータがどこに、どのように格納されているかを管理するシステムです。
ファイルシステムにはファイルやディレクトリ(フォルダ)の作成、削除、移動を行う方法や、データを記録する方式、管理領域の場所等が定められていて、Linuxで使用されているファイルシステムの特徴として以下のようなものがあります。

ファイル

ファイル名

Linuxではファイル名の大文字と小文字を区別します

ドットファイル

ファイル名が.(ドット)から始まるファイルのことを指します。
ドットファイルは隠しファイルになっていて、通常は表示されません。
Linuxでは主にユーザごとの環境設定に使われています。

ディレクトリ

ディレクトリとはファイルを分類、整理などをするための保管場所のことをいいます。Windowsで言うフォルダと同じです。

ルートディレクトリ

'/'というディレクトリはすべてのディレクトリの最上階層にあり、ルートディレクトリと呼ばれます。そのためすべてのユーザのデータはルートディレクトリの下に作成されます。

ホームディレクトリ

ユーザ個人のデータを置くためのディレクトリで、特に設定していない限り/home以下にユーザの名前で用意されます。

カレントディレクトリ

ユーザが現在作業を行なっているディレクトリのことで、作業ディレクトリとも呼ばれます。

絶対パス、相対パス

ファイルの場所を指定する場合、絶対パスと相対パスの2種類の方法があります。

ルートディレクトリを基点にしてファイル名まですべての道のりを書きます。
また、ディレクトリやファイルなどの階層を'/'で結びます。

カレントディレクトリを基点にしてファイルを指定します。
カレントディレクトリにあるファイルはファイル名だけで指定することができます。
これもまた、ディレクトリやファイルなどの階層を'/'で結びます。

次の文字は(絶対パス以外の)パスの指定において特別な意味を持ちます。

.
カレントディレクトリを指します。
..
ひとつ上のディレクトリを指します。
~
ユーザのホームディレクトリを指します。「~/sample.txt」はホームディレクトリ直下にあるsample.txtのことを表しています。

例(図)

カレントディレクトリがhogeのとき、上の図のファイルやディレクトリの絶対パスと相対パスは以下のように表記されます。

                 絶対パス                       相対パス
/                /                              ../..
home             /home                          ../
hoge             /home/hoge                     ./
sample.txt       /home/hoge/sample.txt          ./sample.txt

Linuxの操作

LinuxをCUIで操作するにあたってコマンドというものを利用します。

コマンドの書式

コマンド [オプション] [第一引数] [第二引数] …

コマンドの基本形は上記のような形となり、各項目間を半角スペースであける必要があります。コマンドの表記で[ ]でくくられているものは、指定しなくてもコマンドが機能するものを表しています。またオプションを指定することにより、コマンドに様々な機能を付加することができます。引数にはコマンドの実行対象のファイルを指定することが多いですが何を引数とするか、またいくつまで引数をとることができるかは各コマンドにより異なります。

ユーザ管理

Linuxにはスーパーユーザ、一般ユーザが存在します。

Linuxはマルチユーザシステム(複数のユーザが同時にログインして利用できるシステム)なので、ユーザ間のセキュリティ問題が発生しないように、スーパーユーザと呼ばれる管理者によって厳密に管理されています。スーパーユーザはrootというユーザ名で、すべてのファイルを操作できたり、システム管理用の特別なコマンドの実行や、一般ユーザの登録と削除等ができ、Linux内で絶大な権限を持っています。

一方、一般ユーザとはスーパーユーザとは違いシステムの変更などの作業はほとんどできません。そのためシステムに対して比較的安全に作業を行うことができます。

新しいユーザを追加する

新しいユーザを追加するときはuseraddというコマンドを使用し、rootのみ行うことができます。

useradd [オプション] ユーザ名

一般ユーザ'hoge'を追加する

# useradd hoge

パスワードを設定する

パスワードを設定するときはpasswdというコマンドを使用し、useraddコマンドを使用します。

passwd [ユーザ名]

一般ユーザ'hoge'のパスワード設定をする

$ passwd hoge
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

パスワードはセキュリティの都合上画面に表示されないので注意しましょう。またパスワードを設定するとき、簡単なパスワードで設定しようとすると警告が表示されるで、なるべく英字と数字を混ぜて出来るだけ長いパスワードを設定しましょう。

一時的に別のユーザになる

suというコマンドを使用することによって、一時的に別のユーザになることができます

su [オプション] [ユーザ名]

オプション

-
新規ログインしたのと同じ状態になり、新しいユーザ環境が設定される

'-'が無い場合は現在のユーザ環境が引き継がれます。つまりカレントディレクトリの位置は変わりません。また、ユーザ権限の違いでファイルやディレクトリにアクセスできないことで警告されやすいので注意しましょう。

ディレクトリの操作

ファイルやディレクトリの情報を表示する

内容を表示するときはlsというコマンドを使用します。

ls [オプション] [ディレクトリ名/ファイル名]

ファイルやディレクトリを指定すると、そのファイルやディレクトリの情報を表示することができます。また何も指定しない場合は、カレントディレクトリの内容を表示します。

オプション

-a
すべてのファイルを表示する
-l
ファイルの詳細情報を表示する。

ディレクトリを作成する

ディレクトリの新規作成するときはmkdirというコマンドを使用します。

mkdir [オプション] ディレクトリ名

オプション

-p
途中のディレクトリも同時に作成する

ディレクトリdirを作成する

$ mkdir dir

dr1とdr2のディレクトリを作成する

$ mkdir dr1 dr2

ディレクトリdr1とその下のディレクトリdr2を同時に作成する

$ mkdir -p dr1/dr2

ディレクトリを削除する

ディレクトリを削除するときはrmdirというコマンドを使用します。このコマンドはディレクトリの中身が空でないと削除できないようになっています。そのため、ディレクトリ内にファイルや別のディレクトリがあるときは、それらを先に削除してから、rmdirコマンドを使用しましょう。

rmdir [オプション] ディレクトリ名

オプション

-p
途中のディレクトリも同時に削除する

ディレクトリdirを削除する

$ rmdir dir

ディレクトリdr1とその下のディレクトリdr2を同時に削除する

$ rmdir -p dr1/dr2

ディレクトリを移動する

カレントディレクトリを移動するときはcdというコマンドを使用します。

cd [ディレクトリ名]

ディレクトリを指定ない場合、ユーザのホームディレクトリへ移動します。

カレントディレクトリをdirに変更する

$ cd dir

一つ上のディレクトリに移動する

$ cd ..

直前にいたのディレクトリに戻る

$ cd -

カレントディレクトリを表示する

自分が現在いるディレクトリを知りたい時、pwdコマンドを入力すると絶対パスで自分のいるディレクトリを見ることができます。

$ pwd
/home/hoge

分からないことがあったら

コマンドの使用方法などのマニュアルを表示する

コマンドについて分からないことがあれば、manというコマンドを使用することによって、コマンドのマニュアルが表示されて調べることができます。

man [オプション] コマンド名

オプション

-k
すべてのマニュアルページからキーワードを検索します。
セクション番号
番号を指定することで、(存在する場合)そのセクションに合ったマニュアルを参照することができます。
  1. ユーザコマンド
  2. システムコール
  3. 関数やライブラリルーチン
  4. 特殊ファイル、デバイスドライバ、ハードウェア
  5. 設定ファイルをファイル形式
  6. ゲームとデモ
  7. その他(文字セット、ファイルシステムタイプなど)
  8. システム管理用コマンド
  9. カーネル関係

lsについてのマニュアルをセクション1から探して表示する

$ man 1 ls

LS(1)                                                                   LS(1)

名前
       ls, dir, vdir - ディレクトリの中身をリスト表示する

書式
       ls [options] [file...]
 
       POSIX オプション: [-CFRacdilqrtu1]

       GNU オプション (簡略形式): [-1abcdfghiklmnopqrstuvxABCDFGHLNQRSUX] [-w
       cols]  [-T  cols]  [-I   pattern]   [--block-size=SIZE]   [--classify]
       [--color[={none,always,auto}]]   [--file-type]  [--full-time]  [--for-
       mat={across,commas,long,single-column,verbose,vertical}]
       [--human-readable]       [--indicator-style={none,file-type,classify}]
       [--quoting-style={c,clocale,escape,literal,locale,shell,shell-always}]
       [--show-control-chars]  [--si]  [--sort={none,extension,size,time,ver-
       sion}] [--time={atime,access,ctime,status,use}]  [--help]  [--version]
       [--]

説明
       プログラム ls は、最初にディレクトリでない引き数 file をリスト表示する
       。それから、ディレクトリである引き数について、それぞれのディレクトリに
       (以下省略)

表示を終了したいときは'q'を押して終了します

コマンドラインオプションを簡単にまとめて表示する

多くのコマンドはオプションに--helpを指定することにより簡単なマニュアルを表示することができます。

コマンド名 --help

lsのコマンドオプションを表示する

$ ls --help
使用法: ls [オプション]... [ファイル]...
指定されたファイルの情報をリスト出力する(指定なければ現在のディレクトリ)。
-cftuSUX や --sort の指定がなくても、アルファベット順で整列する。

長いオプションに必須の引数は短いオプションにも必須です.
  -a, --all                  do not hide entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               print the author of each file
  -b, --escape               print octal escapes for nongraphic characters
      --block-size=SIZE      ブロックサイズを SIZE とする
  -B, --ignore-backups       末尾に '~' がつくファイルをリスト表示しない
  -c                          -lt 付き: ctime(最終更新時刻) でソートして表示
                              -l 付き:  ctime を表示する。名前でソートする
                              その他:   ctime でソートする
  -C                         list entries by columns
      --color[=WHEN]         control whether color is used to distinguish file
                              types.  WHEN may be `never', `always', or `auto'
  -d, --directory            list directory entries instead of contents,
                               and do not dereference symbolic links
  -D, --dired                generate output designed for Emacs' dired mode
       (以下省略)

Google

他に分からない事があればGoogleで検索してみる等、まず自分で調べることを心がけましょう。
Google → http://www.google.co.jp/

Linux JF Project → http://www.linux.or.jp/JF/

Linux JM Project → http://www.linux.or.jp/JM/