情報システム科
unix
目次
unixを使う環境を作る
Meadow(Emacs)を使う
コマンド
ファイル
絶対パスと相対パス
iノード
ハードリンクとシンボリックリンク
リダイレクション
パイプ
パーミッション
unixを使う環境を作る
参考
WindowsでもUNIXで使っている便利なツールが使いたい
Cygwin
環境設定
Windows側(コントロールパネル−システム−詳細設定−環境変数)
CYGWIN ntsec
HOME /home
MAKE_MODE UNIX
SHELL /bin/bash
Path に C:\p\cygwin\bin; を追加
cygwin.bat の編集
bash --login -i を sh とした方が使いやすい。
$ bash
bash-2.05b$ sh
$
Meadow(Emacs)を使う
参考
Meadow 入門
*.tar.gz について
ダウンロードしてきた Meadow のアーカイブのファイル名は *.tar.gz となっています。Windows でよく使われている LHA(*.lzh), ZIP(*.zip) とは異なる、見慣れないファイルだと思います。
*.tar.gz は UNIX でよく使われている圧縮形式で、複数のディレクトリ・ファイルを tar コマンドでひとまとめにしてから gzip コマンドでギュッと圧縮したものです。拡張子が *.tar.gz と二重になっているのはそういうわけです。展開するときは、圧縮するときの逆で、gzip の圧縮をといてから tar でまとめられたものをバラします。
tar だけで gzip を使っていないように見えますが、 tar の z オプションで、内部的に gzip を呼び出して解凍しています。"x" は展開(解凍)する、"v" は展開するときにメッセージを表示するオプションです。最後の "f ファイル名" で展開するファイルを指定しています。
C:\> tar -zxvf C:\***.tar.gz
C-x C-c Meadow 自体を終了
C-z 「一時的に」 Emacs を抜ける
C-x k (CTRL キーを押しながら x を押し、次に k を単独で押す)
バッファを消す
ファイル
C-x C-f ファイルを開く Find a file
C-x C-s 保存 Save the file
C-x s 何れかのバッファをセーブする
C-x C-b バッファのリストを見る List buffers
画面
C-v 次の画面を見る
M-v 前の画面に戻る(Alt + v もしくは <ESC> を押して離して v)
C-l(エル) カーソルのある行が画面の中央にくる。
カーソル
C-f 一文字次に進む(Forward)
C-b 一文字前に戻る(Backward)
M-f 一単語次に進む(Forward)
M-b 一単語前に戻る(Backward)
C-n 次の行に移動(Next)
C-p 前の行に移動(Previous)
C-a 行頭に移動
C-e 行末に移動
M-f 一単語先へ、
M-b 一単語前へ移動
C-a と C-e 行頭と行末に移動
M-a と M-e 文頭と文末に移動
M-< ファイルの先頭に移動する
M-> ファイルの末尾に移動する
C-u 繰り返し 例 C-u 8 C-f とタイプすると8文字分先に移動。
C-g Emacs がコマンドに反応しなくなったら、C-g をタイプ
C-x 1 ウィンドウを1つにする
Delete カーソルの直前の文字を削除(delete)
C-d カーソルのある文字を削除(delete)
M-Delete カーソルの直前の単語を消去(kill)
M-d カーソル位置以降にある単語を消去(kill)
C-k カーソル位置から行末までを消去(kill)
M-k カーソル位置から文末までを消去(kill)
C-y 再入(yanking)
M-y 前に消去したテキストを呼び戻す
C-_ 取り消し
C-x u 取り消し(undo)
M-x repl s 文字列の置換
M-x recover file 自動セーブされた編集を回復
M-x text-mode Text mode
C-s 前向きに検索 終了はEnter または c-g
C-r 後向きに検索
複数のウィンドウ
C-x 2 ウィンドウを2つに分割
C-M-v 別のウィンドをスクロール
C-x o ウィンドウの移動("o" は "other(他方))
ESC ESC ESC 再帰編集レベルから抜け出す
C-h ? ヘルプ
C-h c ヘルプ
C-h に続いてどんな種類のヘルプが必要かを示す1文字をタイプ
コマンド
コマンド名と引数の間には1つ以上の空白文字を入れる。
引数と引数の間には1つ以上の空白文字を入れる。
オプション指定の方法−−−はじめに「-(ハイフン)」を入れる。
複数のオプションを指定するときは、例えば上の例で、「-a」オプションと「-l」オプションを同時に指定するときは、「-al」のようにまとめて指定する。
標準入力からの入力が終わったら行頭で CTRL+Dで終了
mount Win32 のパスを POSIX のパスへと変換
systemはマウントテーブルがインストールされているマシン全体で使われる。
userは利用しているそのユーザでしか使われない
textmode(改行をCR+LFに強制的に変換するか)
binmode−−推奨(何も変換を行わない)
umount / 現在のルートをアンマウント
pwd 自分が今いるディレクトリを表示
ls 自分のディレクトリを表示
dir 自分のディレクトリを表示 dir -l
cd カレントディレクトリを変更する。引数なしで使うと、自分のホームディレクトリへ移動
ln シンボリックリンクの作成 ln -s oldfile newfile
chmod パーミッションの変更 chmod 755 test.cgi
echo $PATH PATHの中身を表示
which -a perl フルパスを表示 /usr/bin/perl
type perl フルパスを表示 perl is a tracked alias for /usr/bin/perl
cat 引数にとった1つまたは複数のファイルの中身を表示
head ファイルの中身の、1行目から n オプションの行までを表示
tail 最後の行から数えて1行目から n オプションきの行までを表示
ファイル
ファイル名に使える文字は、アルファベットの大文字、小文字、数字、記号、空白文字も使える
ファイル名の長さは通常255文字まで
大文字と小文字は区別される
絶対パスと相対パス
絶対パスは、ルートディレクトリ「/」から表記したもの
例:/home/bin/sample.html
相対パスは、現在のパスからの位置
同じディレクトリのファイル−−>sample.html
下のディレクトリのファイル−−>bin/sample.html
上のディレクトリのファイル−−>../../sample.html(2つ上)
真上でも真下でもない場合−−>../bin2/sample.html
iノード(i-node, index-node)
UNIXのファイルシステムは、
ブート領域
スーパーブロック
iノードリスト領域
ファイル領域
に分類できる
ファイルは、ファイルに関する情報を集めた「iノード」と
iノードによって指定される「ファイルそのもの」によって構成される。
「iノード」が持っているファイル情報
パーミッション情報(保護ビットともいう)
ファイルタイプ
ファイルサイズ
アクセス時刻
修正時刻
更新時刻
ファイルポインタテーブル(ファイルそのものがある場所を指す)
ディレクトリ(これもファイルの一種)には、そのディレクトリに含まれるファイルの名前と、そのファイルに対応する iノード番号の情報が入っている。ファイルを参照するときには、UNIXシステムはiノード番号によってファイルの実体の位置を知って、アクセスする。普通のファイル、ディレクトリファイル、デバイスファイルはすべてiノード番号によって管理されている。
ls コマンドに -i オプションをつけることでiノード番号を表示させることができる。
ハードリンクとシンボリックリンク
ハードリンクは、 別の「本名」。iノード番号は、同じものを共有する。
例(newfile.txt に newfile2.txt という名前のハードリンクを作成)
$ ln newfile.txt newfile2.txt
$ ls -aiF
247186 ./ 247187 newfile.txt
492301 ../ 247187 newfile2.txt
シンボリックリンクは、別名(エイリアス)。
Windowsのショートカットのようなもの。シンボリックリンクファイルにはそのリンクが指し示す元のファイル「名」が文字列として格納されているだけのファイル。
ln -s oldfile newfile で作成。
例
$ ln -s newfile.txt symbolic.link
$ ls -ai
247186 . 247187 newfile.txt 3498296724 symbolic.link
492301 .. 247187 newfile2.txt
リダイレクション
標準入力と標準出力を切り替える。
入力リダイレクションとは、本来ならキーボードから入力する標準入力を、ファイルから入力させること。
例−−入力リダイレクションを使う
$ cat < newfile.txt
test
入力リダイレクション使わなくても同じ−−>入力リダイレクションは使われない
$ cat newfile.txt
test
出力リダイレクションとは、あるコマンドが本来なら端末(ディスプレイ)に出力する標準出力を、ファイルに対して出力する(書き出す)ようにすること。
例−−test.txt を cat で表示させるかわりに、test2.txt という名前のファイルに書き出す
$ cat test.txt
test
$ cat test.txt > test2.txt
$ cat test2.txt
test
$ cat test.txt >>test2.txt
$ cat test2.txt
test
test
出力リダイレクションをするときに、 > のかわりに >> を使うことによって、すでにあるファイルの末尾に新たな出力を追加していく。
パイプ
パイプは、標準出力(ディスプレイ端末)に出力するコマンドと、標準入力(キーボード)から入力を要求するコマンドを1つにつなげる
cat test.txt | sort
上記の例では、cat コマンドで test.txt の中身を端末に表示させるかわりに、sort コマンドの入力としてつないでいます。sort コマンドの結果は端末に表示される。
パイプはいくつつないでもいい
パーミッション
ファイルまたはディレクトリに対する実行/読み込み/書き出しについての許可/不許可を設定。これがパーミッション。
$ ls -lg
drwxr-xr-x 11 *** users *** *** 14 22:52 ./
drwxr-xr-x 4 *** users *** *** 14 18:09 ../
-rw-r--r-- 1 *** users *** *** 12 18:20 test.txt
※ 所有者 グループ その他
d r w x r w x r − x
1文字目の d は、ディレクトリを示す。通常のファイルの場合は -
2文字目からの9つの文字群は、それぞれ3つずつ3つのブロックに分かれている
最初のブロックの r w x は、所有者に対する 読み取り許可、書き込み許可、実行許可。r w x の文字が表示されていれば許可、- になっていれば不許可。
次のブロックの r w x は、所有者が属するグループ(users)に。
最後のブロックの r w x は、所有者でもなく、所有者が属するグループ(users)にも含まれないその他のユーザーに
「読み取り」「書き込み」「実行」の意味
r.読み取り…指定したファイルの内容を表示する
w.書き込み…ファイルの上書き、削除
x.実行…実行ファイルの実行(プログラム、CGIなど)
rw-rw-r--を数字で表す方法
通常3ケタの数字(8進数)で表します。
rw-rw-r-- は 664
パーミッションの変更
パーミッションの変更は、Telnetでサーバに接続してシェルから行う方法と、 FTPソフトを使って行う方法がある。
ファイルのデフォルトのパーミッションは 664 または 644
一般的には、CGI プログラムファイルのパーミッションは 705(ユーザーは読み書き実行可能、Webサーバからは読みと実行が可能)、データファイルは606(ユーザー、Webサーバともに読み書きが可能)に変更する。
シェルから行う方法
chmod 755 test.txt test2.txt
chmod 755 *.cgi
ホームへ