UNIXとは何か知っているだろうか?UNIXはWindowsと同じ,コンピュータのOS(Operating System)の一種で,企業や銀行の基幹システムや,インターネットの基幹ネットワークを担う非常に重要なものの一つである.ここではUNIXとは何かを知り,基本的な使い方を学ぶ.
UNIXは元々,アメリカの電話会社AT&Tのベル研究所で開発され,その後カリフォルニア大学バークレイ校*やスタンフォード大学*など,複数の場所に渡って開発が続けられた.インターネットの普及の前から,大学での先進のネットワーク開発研究の基盤となるOSとして用いられたため,当初よりネットワーク機能に優れていた.
その後のインターネットの爆発的な普及は,UNIXによって支えられた.この様に,当初から大学による,ネットワークを含むコンピュータ環境の研究開発に用いられたことから,UNIXは,大学の計算機環境のスタンダードになった.一般にWindowsが普及した今となってもその傾向は変わっていない.
Linuxは,当時フィンランドの大学生だったLinus Torvaldsが,大学の研究活動で作ったUNIXによく似たOSである*.その後,プログラムのソースコードをインターネットで公開したことから世界中のソフトウェア開発者との共同開発が始まり,オープンソース開発法という新たなソフトウェア開発手法の流れを作った.
明治大学生田校舎の情報科学センターの環境では,多くの場所でLinuxを起動して利用することが可能である.ただし,建物によって起動方法が異なるので注意が必要である.
中央校舎の環境では,CPUの仮想化ソフトウェア(VmWare)により,Windowsを起動したままLinuxを起動して使用することができる.多人数で同時に起動すると,起動時間が長くかかる可能性があるため,早めに起動しておくと良い.
A棟のコンピュータ環境では,LinuxはWindowsとのデュアルブートとなっており,中央校舎とは違ってWindowsと共にLinuxを動かすことはできない.Linuxを起動するためには,一端Windowsをシャットダウンし,再度コンピュータを起動し直す必要がある.
UNIX/Linux環境でもWindowsの様なウィンドウ環境はあるが,基本はやはり,コマンドラインである.Windowsにもコマンドプロンプトというものがあるが,これはUNIXをまねたものである.コマンドラインを使うには,主要となるコマンドは覚えなくてはならない.以下に,いくつかコマンドの例を挙げる.
UNIX/Linux | コマンドの意味.使用方法 | Dos/Windows |
pwd | 現在のディレクトリ*位置(current directoryという)を知る. | CD(引数無し) |
ls | カレントディレクトリのファイルリストを表示する.ls -a, ls -l, ls -Fなど多くのスイッチがある. | DIR |
cd | カレントディレクトリの変更(change directory).通常,引数を要する.cd /home など. *コマンド引数無しではホームディレクトリに移動するので注意. |
CD |
. | カレントディレクトリ | . |
.. | 上位ディレクトリ.cd ..とすると,一つ上のディレクトリに移動する. | .. |
/ | ルートディレクトリ.ディレクトリツリーの最上位を示す.また,ディレクトリの区切りにも使用する. | \(バックスラッシュ)または円マーク |
cp | ファイルコピー | COPY |
mv | ファイルの移動.ファイル名変更にも使用する. | 存在しない.ファイル名変更はREN |
ps | 実行されているプロセスのリストを表示 | 存在しない |
> | リダイレクト.コマンドの出力をファイルなどに出力できる. 例: ls > test.txt |
> |
>> | 追加.既にあるファイルの末尾に追加できる. 例: ls -al >> test.txt |
>> |
| | パイプ.コマンドの出力を他のコマンドへ流し込める. 例: ls -al | less |
| |
more | 一行に収まりきらないリストを一行ずつ表示する.スペースキーでスクロール 例: ls -al | more |
MORE |
less | moreの拡張版.自在にスクロールできる.スクロールコマンドは,viのカーソル移動コマンドに準拠する. | なし |
プログラムを開発するにはエディタを用いてテキストファイルを編集しなくてはならない.ウィンドウ環境であれば,大抵何らかのテキストファイルエディタがついていることが多いが,これらは環境毎に異なっているし,またウィンドウ環境でなくては使用できない.
従って,通常,UNIX環境では以下のいずれかのエディタが用いられることが多い.
vi ... あらゆる環境で使用できるエディタの基本.テキスト入力モードと,コマンドモード,さらにexモードの3つのモードを持つ点で他のエディタと異なる.あらゆるオペレーションがキーボードのホームポジションから手を放さずに行えるため,このエディタによるテキスト編集の効率は非常に高い.
emacs ... 高機能エディタ.編集するファイルの内容に合わせて自在にカスタマイズできる上,メールの読み書きが出来たり,エディタの中から様々なコマンドが使用できるため,一種の「環境」として使用する人も多い.
ここではviの使用方法を簡単に説明する.
ファイルを作成したいディレクトリをカレントにして,
# vi test.cpp
と入力する.ここで#はプロンプトを示す.すると,
# vi test.cpp ~ ~ ~ ~ ~ ~ ~ ~ ~ "test.cpp" [New File]
などと表示される.これでviが起動されて,test.cppの編集を行う状態になっている.また,この時点でのモードは,コマンドモードである.
文字の入力は,
i
を入力することで可能になる(文字入力モードへの移行).ここでは,以下を入力してみよう.途中で間違えても,かまわずにとりあえず入力してみる.
#include <stdio.h> int main(void) { printf("Hello, world\n") }
一通りの入力が終わったら,必ず[ESC](エスケープキー)を入力する.カーソル位置は,キーボードの矢印キーでも動かせるが,通常はh, j, k, lを用いる.間違えた部分の訂正をするには様々な方法がある.以下の表を参考にせよ.
[ESC] | (エスケープキーを押す)ファイル編集モードからコマンドモードに移行する.これは以下のすべてのコマンドに適用される. |
: | コマンドモードで:(コロン)を入力するとexモードに移行する.exモードでは,ターミナルの最下行に:(コロン)が表示される.このモードはより複雑な編集コマンドを入力する場合に使用する. |
[ESC] | (エスケープキーを押す)ファイル編集モードからコマンドモードに移行する.これは以下のすべてのコマンドに適用される. |
i | カーソルの前に文字列の挿入(insert) |
a | カーソルの後に文字列を入力(append) |
o(オー) | カーソルの下の行に文字列を入力 |
O(オー) | カーソルの上の行に文字列を入力 |
I | カーソル行の先頭から文字列を挿入 |
A | カーソル行の最後に文字列をつけ加える |
x | カーソル位置の一文字を削除 |
dd | カーソル行を削除 |
[n]d | カーソル行以下n行削除([n]は数値) |
r[c] | カーソル上の文字をcにリライト([c]はキーボード上の任意の文字) |
cw | カーソルがある場所の単語を書き換え |
c$ | カーソル行の行末までを書き換え |
h | カーソルを左に移動 |
j | カーソルを下に移動 |
k | カーソルを上に移動 |
l(エル) | カーソルを右に移動 |
0(ゼロ) | カーソルを行の先頭に移動 |
$ | カーソルを行の終端に移動 |
H | ページの先頭行へジャンプ |
L | ページの最後行へジャンプ |
0(ゼロ) | カーソルを行の先頭に移動 |
$ | カーソルを行の終端に移動 |
ZZ | 保存終了 |
q! | 保存しないで強制終了 |
w [file] | ファイルの保存.[file]はファイル名.付けなくても良い. |
w! [file] | ファイルの強制保存 |
u | undo.何か間違いをしたらこれで戻れる. |
yy | カーソル行をコピー |
p | カーソルの下にペースト |
P | カーソルの上にペースト |
[n]yk | カーソルの上n行をコピー |
[n]yj | カーソルの下n行をコピー |
. | 直前の操作を繰り返す |
/[s] | 検索.[s]は検索したい文字列.カギ括弧はいらない |
n | 下方検索 |
N | 上方検索 |
:s/[s1]/[s2] | s1からs2へ置換 |
:s/[s1]/[s2]g | 行末までのすべての文字を置換 |
:1,$s/[s1]/[s2]g | 文書全体のすべての文字を置換 |
|
上記のファイルをメールに添付して提出せよ.
提出期限は来週月曜午後5時までとする.
Linuxはインターネット等で無料で手に入り,そこにはプログラム開発環境がすべて含まれているので,興味があれば試してみることを勧める.無料で手に入るLinuxは無数にあり,Red Hat系のFedora Core,米国で人気のDebian GNU/Linux,SUSE,国産のVineなど.
viについてはLinux.or.jpの【このページ】を参考にすると良い.
UNIXが無くても,Linuxが無くても,WindowsがあればUNIXの勉強&プログラム開発が出来る! Windowsのアプリケーションとして,擬似的なUNIX環境を作り出す,Cygwinというプログラム開発環境があります.Linuxをインストールするのは難しいけれど,でもちょっと試してみたい向きにはCygwinがお勧めです.