->
UNIXでは外部装置をファイルとして扱い、このファイルをデバイスファイルと呼ぶ。デバイスファイルは/devに格納されている。
デバイスファイルを確認する
% ls /dev/
acd0 acpi ad4 ad4s1 ad4s1a ad4s1b
ad4s1c ad4s1d ad4s1e ad4s1f agpgart
ata atkbd0 audit bpf0 bpsm0 console
consolectl ctty cuad0 cuad0.init cuad0.lock
da0 dcons devctl devstat dgdb dumpdev
fd fido geom.ctl io kbd0 kbd1 kbdmux0
klog kmem log mdctl mem net net1
net2 network nfs4 nfslock
・
・
・
代表的なデバイスファイル
装置用のファイル
| デバイス名 | 意味 |
| ad | IDEハードディスク |
| acd | ATAPI CD/DVD装置 |
| usb | USBポート |
| sysmouse | マウス |
特殊ファイル
| デバイス名 | 意味 |
| stdin | 標準入力 |
| stdout | 標準出力 |
| stderr | 標準エラー出力 |
| null | ヌルファイル |
| random | ランダムデータファイル |
| zero | ゼロデータファイル |
| dsp | 音源ファイル |
| sndstat | 音源チップ情報ファイル |
| console | 標準コンソール |
PC/AT互換機では、一つのHDに複数のOSをインストールすることが可能である。FreeBSDでは、このHDの区切りをの単位を「スライス」と呼ぶ。また、スライスをさらに区切るとき、この分割単位を「パーティション」という。これらはWINDOWSとは呼び方が違うので注意が必要。
スライスとパーティションの確認
% df
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/ad4s1a 10154158 201858 9139968 2% /
devfs 1 1 0 100% /dev
/dev/ad4s1f 76213128 49368 70066710 0% /home
/dev/ad4s1e 50777034 4249974 42464898 9% /usr
/dev/ad4s1d 10154158 108402 9233424 1% /var
コマンド履歴とは?
シェルは以前に入力したコマンドの情報を保持している
コマンド履歴の呼び出し
% history
1 21:33 startx
2 21:47 root
3 21:48 exit
4 21:52 startx
5 21:54 exit
6 21:59 su
7 21:59 bye
履歴の実行
直前の実行コマンドを実行
以前に入力したコマンドの検索
Esc-p
使い方はTabによる補完と同じ
UNIXにおける入出力
標準出力と標準エラー出力の違いを考える前に、C言語でプログラムを書いたことがある人なら一度は聞いたことがあるであろう、標準入力、標準出力、標準エラー出力について簡単にまとめてみる。
標準入力
プログラムへデータを入力するための入り口であり。一般的に、
stdin と呼ばれる。通常、キーボードから入力されたデータは標準入力である。
標準出力
プログラムの計算結果などのデータを出力する出力先。こちらは一般的に、
stdout とも呼ばれる。特に指定がない場合、標準出力はディスプレイに表示される。
⇒
リダイレクト
標準エラー出力
プログラムにエラーが起きた場合の診断用のメッセージなどを出力するための出力先。標準エラー出力は、
stderr とも呼ばれる。特に指定がない場合、標準エラー出力はディスプレイに表示される。
標準出力と標準エラー出力の違い
上の説明を見ると疑問に思うことが、標準出力と標準エラー出力の違いである。どちらも指定がない場合はディスプレイに出力することになっていて、以下のようなプログラムを実行すると両方の文字列が出力される。
test1.c
1
2
3
4
5
| #include<stdio.h>
main(){
fprintf(stdout, "stdout\n");
fprintf(stderr, "stderr\n");
} |
出力結果
% gcc test1.c
% a.out
stdout
stderr
しかし、これを
リダイレクトさせてみると結果が変化することが分かる。
出力結果
% gcc test1.c
% a.out > result.txt
stderr
今度は、stderrだけが出力され、stdoutはリダイレクト先であるresult.txtに保存されている。つまり、
標準エラー出力は、プログラムの状態やエラーなどを、出力とは別にユーザに知らせるために用意されたものであると言える。例のような短いプログラムではこの有難みは分かりにくいが、何百行、何千行と処理を行い、その結果を出力するプログラムでは出力も何百行に及んだりすることもあり、どこでエラーが起きたか分かりにくくなってしまうことがある。例として、次のようなプログラムを考えてみる。
test2.c
1
2
3
4
5
6
7
8
9
10
11
| #include<stdio.h>
main(){
int i;
for(i=0; i<50; i++){
if(i==39)
fprintf(stderr, "error : %d\n", i);
else
fprintf(stdout, "%d\n", i);
}
} |
これは、0~49までの数字を出力するプログラムであるが、39を出力するときだけエラーが起きたと仮定し、標準エラー出力にエラーを表示させるようにしている。これを先ほどと同じようにリダイレクトすると、
出力結果
% gcc test2.c
% a.out > result2.txt
error : 39
となり、エラー箇所の出力のみが表示されるようになり、人が見てもどこでエラーが起きているのか非常に分かりやすくなる。
プログラムを書く際には、標準出力と標準エラー出力をうまく使い分けて人に分かりやすいプログラムを書くことを心がけたい。
環境変数とは?
アプリケーションなどの振る舞いを変える
環境変数の例
% setenv LANG ja_JP.eucJP
% cal
日本語のカレンダーが表示
% setenv LANG ro_RO.ISO8859-2
% cal
英語のカレンダーが表示
代表的な環境変数の一覧
LANG
利用するロケールの設定
PATH
実行ファイルのパス
XMODIFIERS
XIMクライアント
コマンド
% setenv
現在の環境変数を表示
% setenv PATH [path1]:[path2]:
[path]を:で区切って記述し、実行ファイルを置いてあるディレクトリを指定
最近、FreeBSDで日本語環境を構築したときのメモ。
今回、インストールしたのは、“scim-anthy”
フリーの日本語環境構築ソフトとしては評判がいいとのこと。
インストールはportsから。
cd /usr/ports/japanese/scim-anthy
make install clean
次に、
.xinitrc に以下を記述
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim
export LANG=ja_JP.eucJP
/usr/local/bin/scim -d &
XMODIFIERSの綴りを間違えやすいので注意(笑
あとは、再起動して
Ctrl + spaceで起動してみる。
右下?にIMEのようなメニューが出ればOK。
最低限覚えておきたいEmacsキーバインドの覚え書きです。
細かい操作の説明などはないので、初めてEmacsを遣う人には向きません。
Emacsについての詳しい説明に関しては、時間があれば書きます。
Emacsコマンド集
※注意
- M-<文字> : Esc or Alt + <文字>キー
■起動と終了
- 起動方法 :% emacs [ file ]
- C-x C-c :終了
- C-g :コマンド入力や実行の中断
- C-x C-f :ファイルを開く(ミニバッファでファイル名を入力)
- C-x C-s :ファイルを保存
- C-x C-w :名前を付けて保存(ミニバッファでファイル名を入力)
■カーソル移動
ページ送り
行送り
- C-p : 前の行(previous)
- C-n : 次の行(next)
行内での操作
- C-b : 前の文字(backward)
- C-f : 次の文字(forward)
■文字の入力と削除
- [key] : [key]をタイプ
- Backspace : カーソルの左の文字を削除
- C-d : カーソル位置の文字を削除
- C-x u : 変更の取り消し。アンドゥ(undo)
■日本語入力(anthyの場合)
- C- 日本語入力on/off
- スペースキーで変換
- 次候補
- 確定
文節関係
- C-f :次の文節
- C-b :前の文節へ
- C-i :文節を短く
- C-o :文節を長く
■コピー&ペースト
- C-k 行末までをカット
- C-y ペースト
- C- <space>マークをセット
- C-w カット
- M-w コピー
■検索と置換
- C-s 前方検索
- C-r 後方検索
- C-s、C-rを押すごとに次を検索、
- Enter検索の終了
- C-g 検索の中断(カーソルは元の位置へ)
- M-x query-replace 置換
■ウィンドウの分割、移動
- C-x 2 ウィンドウを縦に2分割
- C-x 3 ウィンドウを横に2分割
- C-x 1 ウィンドウをひとつにする
- C-x o カーソルを他のウィンドウに移動
■バッファ関連
- C-x C-b バッファ一覧の表示(o:他のウィンドウに選んだバッファを表示、f:バッファ一覧の代わりに選んだバッファを表示)
- C-x b buffername バッファの切り替え
- C-x k バッファを削除
■シェルの起動
何か付けてしておきたい項目等ありましたら、コメント欄にお願いします。