アーカイブ

‘UNIX’ カテゴリーのアーカイブ

デバイスファイル – UNIXリファレンス

2009 年 4 月 22 日 taku コメントはありません



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
・
・
・



代表的なデバイスファイル

装置用のファイル
デバイス名意味
adIDEハードディスク
acdATAPI CD/DVD装置
usbUSBポート
sysmouseマウス
特殊ファイル
デバイス名意味
stdin標準入力
stdout標準出力
stderr標準エラー出力
nullヌルファイル
randomランダムデータファイル
zeroゼロデータファイル
dsp音源ファイル
sndstat音源チップ情報ファイル
console標準コンソール



カテゴリー: UNIX タグ:

スライスとパーティション – UNIXリファレンス

2009 年 4 月 21 日 taku コメントはありません

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


カテゴリー: UNIX タグ:

コマンド履歴 – UNIXリファレンス

2009 年 4 月 21 日 taku コメントはありません

コマンド履歴とは?

シェルは以前に入力したコマンドの情報を保持している

コマンド履歴の呼び出し


% 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


履歴の実行


% !6


直前の実行コマンドを実行


% !!


以前に入力したコマンドの検索

Esc-p
使い方はTabによる補完と同じ

カテゴリー: UNIX タグ:

標準出力と標準エラー出力の違い

2009 年 4 月 18 日 libro コメントはありません

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



となり、エラー箇所の出力のみが表示されるようになり、人が見てもどこでエラーが起きているのか非常に分かりやすくなる。

プログラムを書く際には、標準出力と標準エラー出力をうまく使い分けて人に分かりやすいプログラムを書くことを心がけたい。

カテゴリー: UNIX タグ:

環境変数の設定(setenv) – UNIXリファレンス

2009 年 4 月 9 日 libro コメントはありません

環境変数とは?


アプリケーションなどの振る舞いを変える

環境変数の例


% setenv LANG ja_JP.eucJP % cal
日本語のカレンダーが表示

% setenv LANG ro_RO.ISO8859-2 % cal
英語のカレンダーが表示

代表的な環境変数の一覧


LANG

利用するロケールの設定

PATH

実行ファイルのパス

XMODIFIERS

XIMクライアント
 

コマンド


% setenv
現在の環境変数を表示

% setenv PATH [path1]:[path2]:
[path]を:で区切って記述し、実行ファイルを置いてあるディレクトリを指定

カテゴリー: UNIX タグ:

入出力のリダイレクト – UNIXリファレンス

2009 年 4 月 9 日 libro コメントはありません

リダイレクトとは?

 シェルにおける入出力先を変更する機能

 ◆関連リンク
 →標準入力・標準出力・標準エラー出力とは?


コマンド例

 

[file] < [command]

  標準入力を[file]に変更

 

[command] > [file]

  標準出力を[file]に変更
  ファイルが存在すれば上書き

 

[command] >> [file]

  [file]が存在すれば出力をfile末尾に追加
  なければ新規作成して標準出力を書き込む

 

[command] >& [file], [command] >>& [file]

  標準エラー出力もリダイレクトする


シェルでの典型的な使い方

 

[command] >& /dev/null

 メッセージやエラーメッセージを表示しない


カテゴリー: UNIX タグ:

FreeBSDで日本語環境構築(scim-anthy)

2009 年 4 月 7 日 libro コメントはありません

最近、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。


カテゴリー: UNIX タグ:

最低限覚えておきたいEmacsコマンド集

2009 年 3 月 24 日 libro コメントはありません

最低限覚えておきたいEmacsキーバインドの覚え書きです。
細かい操作の説明などはないので、初めてEmacsを遣う人には向きません。

Emacsについての詳しい説明に関しては、時間があれば書きます。

Emacsコマンド集


※注意
  • C-<文字> : Ctrl + <文字>キー
  • M-<文字>   : Esc or Alt + <文字>キー

■起動と終了

  • 起動方法  :% emacs [ file ]
  • C-x C-c  :終了
  • C-g     :コマンド入力や実行の中断
  • C-x C-f  :ファイルを開く(ミニバッファでファイル名を入力)
  • C-x C-s  :ファイルを保存
  • C-x C-w  :名前を付けて保存(ミニバッファでファイル名を入力)

■カーソル移動


ページ送り

  • M-v  :1画面戻る
  • C-v  :1画面進む

行送り

  • C-p  : 前の行(previous)
  • C-n  : 次の行(next)

行内での操作

  • C-a  : 行の先頭
  • C-e  : 行末(end)
  • 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 バッファを削除

■シェルの起動

  • M-x shell シェルの起動
何か付けてしておきたい項目等ありましたら、コメント欄にお願いします。

カテゴリー: UNIX タグ: