[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

7. 特殊ファイルの形式

この章は,特殊な形式のファイルを作成する方法(と,特殊なファイル形式の 一つのディレクトリを削除するrmdir方法)を記述します.

Unixのようなオペレーティングシステムには,特殊なファイル形式は,他より 著しく少ないのですが,すべて通常のファイルと差のないバ イトストリームのみとして扱うことはできません.例えば,ファイルを作成し たり削除したりするとき,システムはこの情報を記録する必要があり,それは ディレクトリ--特殊な形式のファイル--で行います.ディレクトリを 通常のファイルとして読み込むこともできますが,気になる場合は,システム がその仕事を行うために,ファイルのバイト上で構造,特定の順序を強制する 必要があります.このためそれは"特殊な"形式のファイルとなります.

ディレクトリ以外では,特殊なファイル形式は,名前付きパイプ(FIFO),シンボ リックリンク,ソケット,そして特殊ファイルと呼ばれるものを含みます.


7.1 ln: ファイル間にリンクを作成

lnは,ファイル間のリンクを作成します.デフォルトで,それはハード リンクを作成します.`-s'を用いると,シンボリック(またはソフト) リンクを作成します.構文は以下のとおりです.

 
ln [option]… target [linkname]
ln [option]… targetdirectory

ハードリンクは,既存のファイルの別名です.リンクとオリジナルは区別 できません.技術的には,それらは同じinodeを共有し,inodeはファイルに関す る必要な情報をすべて含みます--実際,inodeがファイルであると言っ ても間違いではありません.既存のすべての実装では,ディレクトリにハードリ ンクを作成できず,ハードリンクはファイルシステム間をまたぐことができませ ん.(しかしながら,これらの制限はPOSIXと一致しません.)

一方,シンボリックリンク (短く言うとsymlinks)は,リンクファ イルが実際には名前の異なるファイルを参照する特殊なファイル形式です(すべ てのカーネルがサポートしているわけではありません.System V release 3(と それより古いもの)はsymlinkがありません).ほとんどの処理(開く,読み込む, 書き出す等)は,シンボリックリンクを通じて行われ,カーネルは自動的にリン クをdereferencesし,リンク先を処理します.しかし,リンク先ではなく リンクファイル自身に作用する(例えば削除)処理もあります.See (library)Symbolic Links section `Symbolic Links' in The GNU C Library Reference Manual.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -b'
` --backup[=method]'

See section バックアップオプション. 上書きされたり削除されたりするそれぞれのファイル のバックアップを作成します.

` -d'
` -F'
` --directory'

スーパーユーザがディレクトリのハードリンクを作成できるようにします.

` -f'
` --force'

既存のリンク先ファイルを削除します.

` -i'
` --interactive'

既存リンク先ファイルを削除するかどうか,プロンプトを表示します.

` -n'
` --no-dereference'

明示的な,ディレクトリへのシンボリックリンクとなるリンク先が与えられたと き,リンク先を通常のファイルとして扱います.

リンク先が(シンボリックリンクではない)実際のディレクトリのとき,不明瞭な ものはありません.しかし,指定されたリンク先がディレクトリへのシンボリッ クリンクの時,ユーザの要求の扱い方は,二通りあります.lnは,リン ク先を通常のディレクトリとして扱い,それに対するリンクを作成することがで きます.一方,リンク先を非ディレクトリ--シンボリックリンク--として見る こともできます.その場合,lnは,新しいリンクを作成する前に,その シンボリックリンクを削除またはバックアップする必要があります.デフォルト では,ディレクトリへのシンボリックリンクであるリンク先を,ディレクトリと 同様に扱います.

` -s'
` --symbolic'

ハードリンクの代わりにシンボリックリンクを作成します.このオプションは, シンボリックリンクをサポートしていないシステムでは,単にエラーメッセージ を生成します.

` -S suffix'
` --suffix=suffix'

`-b'を用いて生成されるそれぞれのバックアップファイルにsuffix を追加します.See section バックアップオプション.

` --target-directory=directory'

リンク先directoryを指定します.See section ターゲットディレクトリ.

` -v'
` --verbose'

リンクする前にそれぞれのファイル名を出力します.

` -V method'
` --version-control=method'

`-b'で作成されるバックアップの形式を変更します.method引数は, `none' (または`off'),`numbered' (または`t'), `existing' (または`nil'),または,`never' (または `simple')が可能です.See section バックアップオプション.

以下は例です.

 
ln -s /some/name  # creates link ./name pointing to /some/name
ln -s /some/name myname  # creates link ./myname pointing to /some/name
ln -s a b ..      # creates links ../a and ../b pointing to ./a and ./b

7.2 mkdir: ディレクトリの作成

mkdirは指定された名前でディレクトリを作成します.構文は以下のとお りです.

 
mkdir [option]… name

nameが既存のファイルでディレクトリではない場合,mkdirは標準 エラー出力に警告メッセージを出力し,残っているnameを処理した後,1 のステータスで終了します.nameが既存のディレクトリで,-p オプショ ンが与えられていないときも同じです.nameが既存のディレクトリで,-p オプションが与えられている場合,mkdirはそれを無視します.すなわち, mkdirは警告の出力も,エラーの発生も,(-m オプションが与えられてい ても)ディレクトリのモードの変更もせず,残りのnameの処理を続けます.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるディレクトリのモードをmodeで設定し,それはchmodで 設定する抽象的なもので,(読み書きと実行を全員に許可する)`a=rwx'から 目的のポイントのためにumaskのビットセットを引いたものを使用します. See section ファイルのパーミッション.

` -p'
` --parents'

それぞれの引数に対し,足りない親ディレクトリを作成します.親ディレクトリ のモードは`u+wx'で編集されたumaskに設定します.既存のディレクトリに 対する引数は無視します.

` -v'
` --verbose'

作成されるそれぞれのディレクトリに対しメッセージを出力します.これは `--parents'とともに用いると最も便利です.


7.3 mkfifo: FIFO(名前付きパイプ)の作成

mkfifoはFIFO(名前付きパイプとも呼ばれる)を指定された名前で作成しま す.構文は以下のとおりです.

 
mkfifo [option] name

FIFOは,通信に依存するプロセスを可能にする特殊なファイル形式です. 一つのプロセスは書き込みで,もう一つは読み込みでFIFOを開き,データは,シェ ルやその他の通常の名前なしパイプのように流れます.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるFIFOのモードをmodeに設定し,それはchmodで設定する 抽象的なもので,(読み込みと書き出しを全員に許可する)`a=rw'から目的 のポイントのためにumaskのビットセットを引いたものを使用します. See section ファイルのパーミッション.


7.4 mknod: ブロックやキャラクタ特殊ファイルの作成

mknodは,FIFO,キャラクタ特殊ファイルや,ブロック特殊ファイルを指 定された名前で作成します.構文は以下のとおりです.

 
mknod [option]… name type [major minor]

上記の"特殊ファイル形式"と異なり,特殊ファイルという用語は,Unix 上で技術的な意味があります.それはデータを生成または受信するものです.こ れは通常,ハードウェアの物理的な部分に対応します.(これらのファイルは通 常システム設定時に作成されます.) mknodコマンドは,この形式のファ イルを作成するものです.そのようなデバイスは,一度に一文字または一度に一 "ブロック"(多くの文字)読み込むことができ,そのため,ブロック特殊 ファイルとキャラクタ特殊ファイルがあると言っているのです.

nameの後の引数は作成するファイルの形式を指定します.

` p'

FIFOに対応します.

` b'

ブロック特殊ファイルに対応します.

` c'

キャラクタ特殊ファイルに対応します.

ブロックやキャラクタ特殊ファイルを作成しているとき,メジャーとマイナーデ バイス番号をファイル形式の後に与える必要があります.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` -m mode'
` --mode=mode'

作成されるファイルのモードをmodeに設定し,それはchmodで設定 する抽象的なもので,`a=rw'から目的のポイントのためにumaskのビットセッ トを引いたものを使用します.See section ファイルのパーミッション.


7.5 rmdir: 空のディレクトリの削除

rmdirは空のディレクトリを削除します.構文は以下のとおりです.

 
rmdir [option]… directory

directory引数が既存の空のディレクトリを参照していない場合,エラー となります.

プログラムは以下のオプションも受け入れます.共通のオプション,も参照 してください.

` --ignore-fail-on-non-empty'

ディレクトリが空でないため,それぞれ単独であるディレクトリ削除の失敗を無 視します.

` -p'
` --parents'

directoryを削除し,それぞれのdirectoryの構成要素の削除を試み ます.そのため,例えば,`rmdir -p a/b/c'は`rmdir a/b/c a/b a' ににています.同様に,これらのディレクトリが空でないと判明した場合は失敗 します.そのような失敗で,診断を引き起こし,rmdirを失敗で終了させ ないため,`--ignore-fail-on-non-empty'オプションを使用してください.

` -v'
` --verbose'

削除に成功したそれぞれの診断を与えます.directoryは削除されます.

空でないディレクトリの(再帰的な)削除方法は,See section rm: ファイルやディレクトリの削除.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.